美文网首页Golang 入门资料+笔记GoGolang
golang链接mssql数据库挖坑,填坑

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

作者: 毛毛v5 | 来源:发表于2019-03-20 23:39 被阅读5次

           先是用了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数据库挖坑,填坑

        本文链接:https://www.haomeiwen.com/subject/ovzxvqtx.html