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

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

}

```

你可能感兴趣的:(golang链接mssql数据库挖坑,填坑)