从0开始学golang--1.1--连接ms sql server数据库
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字段名称,不然会出错。网上都直接放*,可是获取不到数据,没有去验证是否和表里的字段多少有关系,或许别人表里只有两个字段
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
Go打包二进制文件的实现
背景众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。操作需求:打包部署到centos7笔者打包...
[阅读全文]
-
-
-
-
golang语言编码规范的实现
本规范旨在为日常go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和 ...
[阅读全文]
-
-
-
网友评论