package main

 

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字段名称,不然会出错。网上都直接放*,可是获取不到数据,没有去验证是否和表里的字段多少有关系,或许别人表里只有两个字段
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄