從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 \t Number: %d\n", FID, FAccount)
    }
    return
}
 
我查出來的是必須對應select字段名稱,不然會出錯。網上都直接放*,可是獲取不到數據,沒有去驗證是否和表里的字段多少有關系,或許別人表里只有兩個字段


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM