go语言通过odbc操作Access数据库的方法(整理9篇)由网友“精神广东人”投稿提供,下面是小编整理过的go语言通过odbc操作Access数据库的方法,欢迎大家阅读借鉴,并有积极分享。
篇1:go语言通过odbc操作Access数据库的方法
作者:work24 字体:[增加 减小] 类型:
这篇文章主要介绍了go语言通过odbc操作Access数据库的方法,实例分析了Go语言通过odbc连接、查询与关闭access数据库的技巧,需要的朋友可以参考下
本文实例讲述了go语言通过odbc操作Access数据库的方法,分享给大家供大家参考。具体如下:
这里需要用到go-odbc库,下载地址为:github.com/weigj/go-odbc
代码如下:
package main;
import (
“fmt”
“database/sql”
_“odbc/driver”
)
func main{
conn,err := sql.Open(“odbc”,“driver={Microsoft Access Driver (*.mdb)};dbq=d:\\test.mdb”);
if(err!=nil){
fmt.Println(“Connecting Error”);
return;
}
defer conn.Close();
stmt,err := conn.Prepare(“select * from test”);
if(err!=nil){
fmt.Println(“Query Error”);
return;
}
defer stmt.Close();
row,err := stmt.Query();
if err!=nil {
fmt.Println(“Query Error”);
return;
}
defer row.Close();
for row.Next() {
var id int;
var name string;
if err := row.Scan(&id,&name);err==nil {
fmt.Println(id,name);
}
}
fmt.Printf(“%s\n”,“finish”);
return;
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇2:VB两种操作Access数据库方法的比较
在VB编程中通常要与数据库打交道,对于数据量较小的应用,一般选用Access作为数据库,因为Access数据库比较简单,功能也比较齐全,数据的备份、拷贝都很方便,且程序发布时不需要额外单独安装其它的数据库管理软件,
VB两种操作Access数据库方法的比较
。因此,在功能能够满足要求的条件下,Access数据库往往成为一些小型数据库软件的首选。关于用VB操作Access库表的方法有多种,一般初学者往往会使用数据控件,许多资料上也大都以此作为操作Access数据库的起点来介绍,因为这个方法使用起来非常简单,但使用数据控件的方法在程序编码上往往不够灵活。现在介绍一下其它两种操作Access数据库的方法。
第一种:使用数据库对象
首先,要进行有关数据对象的声明,代码如下。
Dim MyWs As Workspace
Dim MyDB As Database
Dim WordTab As Recordset
生成工作区,打开数据库,然后再根据需要打开相应的库表。
Set MyWs = DBEngine.CreateWorkspace″″ ″Admin″ ″″ dbUseJet
Set MyDB = MyWs.OpenDatabase示菘饷称 False False
Set WordTab = MyDB.OpenRecordset″表谩 dbOpenDynaset
这种方法的优点是代码比较简单,要求的环境为DAO 2.5/3.51,其中表名可以换成SELECT语句,即根据条件打开所需要的记录集,这种方法可脱离数据控件,可以比较方便灵活地操作数据库表,增加了程序的灵活性。
提示:经过测试发现,这种方法只能打开Access97库表,对于Access库表却无能为力,会弹出库表格式不对的出错提示。另外,对数据环境的要求仍比较多,
第二种:使用ADODB
首先,声明一个链接变量,并根据需要声明记录集变量。
Dim LocCnn1 As ADODB.Connection
Dim LocRst1 As ADODB.Recordset
建立与数据库的链接,如果数据库没有口令,最后一行可以不写(写上也不会错)。
Set LocCnn1 = New ADODB.ConnectionLocCnn1.Open ″Provider=Microsoft.Jet.OLEDB.4.0User ID=Admin & _
″Data Source=″ & App.Path & ″数据库名称.mdb& _
″Mode=Share Deny NoneExtended Properties=''Persist Security Info=False & _
″Jet OLEDBDatabase Password='asp561rbc'
这种方法虽然代码长一些,但对数据环境要求低,且结构清晰,所编写的发布程序也大为减小。由于与链接SQL Server等数据库的方法一样,因而大量的操作数据库的代码相同,当数据库需要由Access扩充到一些大型数据库,或由一些大型数据库裁剪出一个简单数据库时,程序的移植会比较方便。
另外,这种方法对于Access97及Access2000均能很好地支持,兼容性好。对于大量插入、删除、修改等操作,只在Connection层进行即可,既可提高速度又可减少代码。
如果还要获取具体的记录集内容,则须再根据条件打开具体的库表,代码如下:
Set LocRst1 = New ADODB.Recordset
LocRst1.CursorType = adOpenKeyset
LocRst1.LockType = adLockOptimistic
LocRst1.Open ″SELECT FROM 表名″ LocCnn1adCmdText
提示:一般情况下,建议使用第二种方法。
篇3:go语言操作redis连接池的方法
作者:heishui 字体:[增加 减小] 类型:
这篇文章主要介绍了go语言操作redis连接池的方法,涉及Go语言操作radis的技巧,需要的朋友可以参考下
本文实例讲述了go语言操作redis连接池的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
func newPool(server, password string) *redis.Pool {
return &redis.Pool{
MaxIdle: 3,
IdleTimeout: 240 * time.Second,
Dial: func (redis.Conn, error) {
c, err := redis.Dial(“tcp”, server)
if err != nil {
return nil, err
}
if _, err := c.Do(“AUTH”, password); err != nil {
c.Close()
return nil, err
}
return c, err
},
TestOnBorrow: func(c redis.Conn, t time.Time) error {
_, err := c.Do(“PING”)
return err
},
}
}
var (
pool *redis.Pool
redisServer = flag.String(“redisServer”, “:6379”, “”)
redisPassword = flag.String(“redisPassword”, “”, “”)
)
func main() {
flag.Parse()
pool = newPool(*redisServer, *redisPassword)
...
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇4:Go语言通过http抓取网页的方法
作者:liuli 字体:[增加 减小] 类型:转载
这篇文章主要介绍了Go语言通过http抓取网页的方法,实例分析了Go语言通过http操作页面的技巧,需要的朋友可以参考下
本文实例讲述了Go语言通过http抓取网页的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
package main
import (
“fmt”
“log”
“net/http”
“net/url”
“io/ioutil”
)
//指定代理ip
func getTransportFieldURL(proxy_addr *string) (transport *http.Transport) {
url_i := url.URL{}
url_proxy, _ := url_i.Parse(*proxy_addr)
transport = &http.Transport{Proxy : http.ProxyURL(url_proxy)}
return
}
//从环境变量$http_proxy或$HTTP_PROXY中获取HTTP代理地址
func getTransportFromEnvironment() (transport *http.Transport) {
transport = &http.Transport{Proxy : http.ProxyFromEnvironment}
return
}
func fetch(url , proxy_addr *string) (html string) {
transport := getTransportFieldURL(proxy_addr)
client := &http.Client{Transport : transport}
req, err := http.NewRequest(“GET”, *url, nil)
if err != nil {
log.Fatal(err.Error())
}
resp, err := client.Do(req)
if err != nil {
log.Fatal(err.Error())
}
if resp.StatusCode == 200 {
robots, err := ioutil.ReadAll(resp.Body);
resp.Body.Close()
if err != nil {
log.Fatal(err.Error())
}
html = string(robots);
} else {
html = “”
}
return
}
func main() {
proxy_addr := “183.221.250.137:80/”
url := “www.baidu.com/s?wd=ip”
html := fetch(&url, &proxy_addr)
fmt.Println(html)
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇5:go语言通过zlib压缩数据的方法
作者:紫青城 字体:[增加 减小] 类型:
这篇文章主要介绍了go语言通过zlib压缩数据的方法,实例分析了Go语言中zlib的使用技巧,需要的朋友可以参考下
本文实例讲述了go语言通过zlib压缩数据的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
package main
import (
“fmt”
“compress/zlib”
“bytes”
)
func main {
var input = []byte(“data:image/png;base64,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”)
var buf bytes.Buffer
compressor, err := zlib.NewWriterLevelDict(&buf, zlib.BestCompression, input)
if err != nil {
fmt.Println(“压缩失败”)
return
}
compressor.Write(input)
compressor.Close()
fmt.Println(buf.Bytes())
fmt.Println(len(buf.Bytes()))
fmt.Println(len(input))
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇6:go语言通过管道连接两个命令行进程的方法
作者:令狐不聪 字体:[增加 减小] 类型:转载
代码如下:
package main
import (
“os”
“os/exec”
“fmt”
“flag”
“strings”
)
func main() {
generator := exec.Command(“cmd1”)
consumer := exec.Command(“cmd2”)
pipe, err := consumer.StdinPipe()
generator.Stdout = pipe
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇7:Go语言通过Luhn算法验证信用卡卡号是否有效的方法
作者:heishui 字体:[增加 减小] 类型:
这篇文章主要介绍了Go语言通过Luhn算法验证信用卡卡号是否有效的方法,实例分析了Luhn算法的原理与验证卡号的使用技巧,需要的朋友可以参考下
本文实例讲述了Go语言通过Luhn算法验证信用卡卡号是否有效的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
package main
import (
“fmt”
“strings”
)
const input = `49927398716
49927398717
1234567812345678
1234567812345670`
var t = [...]int{0, 2, 4, 6, 8, 1, 3, 5, 7, 9}
func luhn(s string) bool {
odd := len(s) & 1
var sum int
for i, c := range s {
if c < ‘0‘ || c >‘9‘ {
return false
}
if i&1 == odd {
sum += t[c-‘0‘]
} else {
sum += int(c - ‘0‘)
}
}
return sum%10 == 0
}
func main {
for _, s := range strings.Split(input, “\n”) {
fmt.Println(s, luhn(s))
}
}
输出结果
代码如下:
49927398716 true
49927398717 false
1234567812345678 false
1234567812345670 true
希望本文所述对大家的Go语言程序设计有所帮助,
篇8:go语言通过反射获取和设置结构体字段值的方法
作者:heishui 字体:[增加 减小] 类型:转载
这篇文章主要介绍了go语言通过反射获取和设置结构体字段值的方法,实例分析了Go语言反射的使用技巧,需要的朋友可以参考下
本文实例讲述了go语言通过反射获取和设置结构体字段值的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
type MyStruct struct {
N int
}
n := MyStruct{ 1 }
// get
immutable := reflect.ValueOf(n)
val := immutable.FieldByName(“N”).Int()
fmt.Printf(“N=%d\n”, val) // prints 1
// set
mutable := reflect.ValueOf(&n).Elem()
mutable.FieldByName(“N”).SetInt(7)
fmt.Printf(“N=%d\n”, n.N) // prints 7
希望本文所述对大家的go语言程序设计有所帮助,
篇9:(一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示)
只要把下面的例子理解了,那么通过C API操作数据库就没啥难的了
#include
运行结果如下:
【go语言通过odbc操作Access数据库的方法(整理9篇)】相关文章:
网络聊天英语缩略语含义2023-04-30
如何学好Access数据库编程2023-04-30
如何设置ACCESS(运行时)的宏安全性级别数据库教程2023-03-01
编程毕业论文范文大全2023-01-14
ACCESS数据库中Field对象的caption属性读写数据库教程2023-06-16
校园网站设计方案2023-11-07
关于一个数据转换软件的使用StatTransfer7数据库教程2023-05-15
小技巧:用批处理对MySQL进行数据操作数据库教程2023-03-28
大学生计算机专业开题报告2022-05-06
一个基因序列及其注释数据库的管理系统2023-02-04