package main
import (
"database/sql"
"fmt"
"strings"
"time"
)
import (
_ "github.com/mattn/go-adodb"
)
type Mssql struct {
*sql.DB
database string
dataSource string
windows bool
sa SA
}
type SA struct {
user string
passwd string
}
type User struct {
Age int32 `sql:"AGE"`
Name string `sql:"NAME"`
AutoDate time.Time `sql:"AUTO_DATE"`
}
func (m *Mssql) Open() (err error) {
var conf []string
conf = append(conf, "Provider=SQLOLEDB")
conf = append(conf, "Data Source="+m.dataSource)
if m.windows {
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: "99.99.99.99,9999",
database: "qqq",
// windwos: true 为windows身份验证,false 必须设置sa账号和密码
windows: false,
sa: SA{
user: "tester",
passwd: "9999",
},
}
// 连接数据库
err := db.Open()
if err != nil {
fmt.Println("sql open:", err)
return
}
defer db.Close()
// 执行SQL语句
rows, err := db.Query("select AGE, AUTO_DATE from TB_AP_AUTH")
if err != nil {
fmt.Println("query: ", err)
return
}
var user User
if err != nil {
panic(err.Error())
}
for rows.Next() {
if err := rows.Scan(&user.Age, &user.AutoDate); err != nil {
fmt.Println("Scan: ", err)
}
fmt.Println("AGE: %s", user.Age)
fmt.Println(user.AutoDate)
}
}
'
留言
張貼留言