前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang链接mssql数据库挖坑,填坑

golang链接mssql数据库挖坑,填坑

作者头像
xiny120
发布2019-06-11 11:18:09
4.6K1
发布2019-06-11 11:18:09
举报
文章被收录于专栏:毛毛v5毛毛v5

       先是用了github.com上面星星最多的一个库 "github.com/denisenkom/go-mssqldb",可是死活连不上我的mssqldb,提示是Login Error:EOF,搞不清怎么回事。后来没办法又查到一个 "github.com/mattn/go-adodb" 说是用的原生的activex?不知道能不能跨平台了。不过这个可以连接到我的mssql.先凑合着用吧。

       之前链接到mysql ,tdib 都是好好的,mssql咋这么不靠谱了。

```

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 SignIn(un string, pwd string) int {

db := Mssql{

dataSource: "hsddf021.my3w.com",

database:   "hdsdsf04021_db",

// windwos: true 为windows身份验证,false 必须设置sa账号和密码

windows: false,

sa: SA{

user:   "hdsdfsd04021",

passwd: "sdf516A",

},

}

// 连接数据库

err := db.Open()

if err != nil {

fmt.Println("sql open:", err)

return 0

}

defer db.Close()

// 执行SQL语句

rows, err := db.Query("select username,userid from dv_user where username='" + un + "'")

if err != nil {

fmt.Println("query: ", err)

return 0

}

for rows.Next() {

var name string

var number int

rows.Scan(&name, &number)

fmt.Printf("Name: %s \t Number: %d\n", name, number)

}

/*

db, err := sql.Open("mssql", cfg.Cfg["mssql"])

var userid int32

var username string

var userpassword string

var userguid string

if err != nil {

log.Fatal("Open connection failed:", err.Error())

}

err = db.Ping()

if err != nil {

log.Fatal("connection failed:", err.Error())

}

log.Println(err.Error())

defer db.Close()

stmt, err0 := db.Prepare(`SELECT [UserID],[UserName],[UserPassword],[userguid] FROM [Dv_User] where [UserName] = "xinyuan"`)

if err0 != nil {

log.Println(err0)

}

defer stmt.Close()

rows, err := stmt.Query(un)

if err == nil {

defer rows.Close()

if rows.Next() {

rows.Scan(&userid, &username, &userpassword, &userguid)

ok, _ := uuid.NewV4()

log.Println(ok)

}

}

ss, _ := json.Marshal(db)

log.Println(ss)

*/

return 0

}

```

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档