Golang 連接 SQL Server

package main

import (
	"database/sql"
	"fmt"

	. "github.com/soekchl/myUtils"
	_ "github.com/soekchl/odbc_for_google" // code.google.com/p/odbc
)

// 連接 Microsoft SQL 結構體
type Mssql struct {
	*sql.DB
}

var (
	mssql_data_source string = "localhost"
	mssql_database    string = "test"
	mssql_user        string = "admin"
	mssql_passwd      string = "admin"
	mssql_port        string = "1433"
	db                Mssql
)

func main() {

	name, err := GetName()
	Notice(name, err)

}

func (m *Mssql) GetSqlHandle() (err error) {
	if m.DB != nil {
		m.Close()
		Warn("關閉連接後從新連接~")
	}

	sql_conn_str := fmt.Sprintf("driver={sql server};server=%s;port=%s;uid=%s;pwd=%s;database=%s",
		mssql_data_source, mssql_port, mssql_user, mssql_passwd, mssql_database,
	)

	m.DB, err = sql.Open("odbc", sql_conn_str)
	if err != nil {
		return err
	}
	return nil
}

// 關閉數據庫
func (m *Mssql) Close() (err error) {
	if m.DB == nil {
		return nil
	}
	err = m.DB.Close()
	m.DB = nil
	return
}

// 獲取最近一期數據庫數據
func GetName() (name string, err error) {
	// 連接數據庫
	err = db.GetSqlHandle()
	if err != nil {
		return
	}
	defer db.Close()

	sql_cmd := "select name from test"

	// 執行SQL語句
	rows, err := db.Query(sql_cmd)
	if err != nil {
		return
	}
	defer rows.Close() // 釋放連接池

	rows.Next()

	err = rows.Scan(&name)

	return
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章