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

毛毛v5 · · 2538 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

       先是用了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

}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:毛毛v5

查看原文:golang链接mssql数据库挖坑,填坑

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2538 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传