从0开始学golang--1.1--连接ms sql server数据库
程序员文章站
2022-03-29 19:23:25
package main import ( "database/sql" "fmt" "strings" ) import ( _ "github.com/mattn/go-adodb" ) type Mssql struct { *sql.DB dataSource string database ......
package main
import (
"database/sql"
"fmt"
"strings"
)
import (
_ "github.com/mattn/go-adodb"
)
type mssql struct {
*sql.db
datasource string
database string
windows bool
sa sa
}
type sa struct {
user string
passwd string
}
func (m *mssql) open() (err error) {
var conf []string
conf = append(conf, "provider=sqloledb")
conf = append(conf, "data source="+m.datasource)
if m.windows {
// integrated security=sspi 这个表示以当前windows系统用户身去登录sql server服务器(需要在安装sqlserver时候设置),
// 如果sql server服务器不支持这种方式登录时,就会出错。
conf = append(conf, "integrated security=sspi")
}
conf = append(conf, "initial catalog="+m.database)
conf = append(conf, "user id="+m.sa.user)
conf = append(conf, "password="+m.sa.passwd)
m.db, err = sql.open("adodb", strings.join(conf, ";"))
if err != nil {
return err
}
return nil
}
func main() {
db := mssql{
datasource: "数据库地址",
database: "数据库名称",
// windwos: true 为windows身份验证,false 必须设置sa账号和密码
windows: false,
sa: sa{
user: "账号",
passwd: "密码",
},
}
// 连接数据库
err := db.open()
if err != nil {
fmt.println("sql open:", err)
return
}
defer db.close()
// 执行sql语句
rows, err := db.query("select fid,faccount from dbo.taccounts")
if err != nil {
fmt.println("query: ", err)
return
}
for rows.next() {
var fid int
var faccount string
rows.scan(&fid, &faccount)
fmt.printf("name: %s \t number: %d\n", fid, faccount)
}
return
}
我查出来的是必须对应select字段名称,不然会出错。网上都直接放*,可是获取不到数据,没有去验证是否和表里的字段多少有关系,或许别人表里只有两个字段
上一篇: (杭电1406)完数