从0开始学golang--1.1--连接ms sql server数据库
package main
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
import ( "database/sql" "fmt" "strings" )
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 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 \t Number: %d\n", FID, FAccount) } return } 我查出来的是必须对应select字段名称,不然会出错。网上都直接放*,可是获取不到数据,没有去验证是否和表里的字段多少有关系,或许别人表里只有两个字段
更多精彩