加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

从0开始学golang--1.1--连接ms sql server数据库

发布时间:2020-12-16 09:29:25 所属栏目:大数据 来源:网络整理
导读: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 {
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 t Number: %dn",FID,FAccount)
????}
????return
}
?
我查出来的是必须对应select字段名称,不然会出错。网上都直接放*,可是获取不到数据,没有去验证是否和表里的字段多少有关系,或许别人表里只有两个字段

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读