zoukankan      html  css  js  c++  java
  • 从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 Number: %d ", FID, FAccount)
        }
        return
    }
     
    我查出来的是必须对应select字段名称,不然会出错。网上都直接放*,可是获取不到数据,没有去验证是否和表里的字段多少有关系,或许别人表里只有两个字段
  • 相关阅读:
    visual sudio开发工具使用小技巧
    JS去除右边的逗号
    下拉标题
    sp_addextendedproperty
    触发器的使用
    缺失一个正数
    组合总和 去重
    拖动 Drag
    n皇后问题
    括号生成
  • 原文地址:https://www.cnblogs.com/Liang2790912648/p/10604310.html
Copyright © 2011-2022 走看看