跳到主要內容

Golang筆記-MSSQL Query


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)
 }
}
'

留言

這個網誌中的熱門文章

Java String Format

java練習筆記 String Format延伸應用: fix position : left justified()           System.out.println(String.format("%-10s hello" , s1));           hello      java fix position : right justified()           System.out.println(String.format("%10s helllo" , s1));                hello java fill zero in front           String.format("%03d" ,  s1)           050

Java-取出物件memory大小

import org.apache.lucene.util.RamUsageEstimator; String b = "hello warld!"; System.out.printf("sizeOf(String) = %s bytes\n", RamUsageEstimator.sizeOf(b)); //pom.xml 新增jar <dependency> <groupId>fakepath</groupId> <artifactId>lucene-core</artifactId> <version>4.2.0</version> </dependency>

Golang筆記-利用xorm實現ORM-mssql

package main import(  "fmt"  "time"  "github.com/go-xorm/xorm"  _ "github.com/denisenkom/go-mssqldb"  ) //宣告對應 TABLE的物件 type User struct {  Age int32 `xorm:"AGE"` //對應Table 欄位名稱  Name string `xorm:"NAME"`  AutoDate time.Time `xorm:"AUTODATE_TIME"` } //印出結果 func (user * User) String() string {  return fmt.Sprintf("AGE: %d, Name: %s,  AUTO_DATE: %v", user. Age, user. Name,user.AutoDate) } //宣告xorm引擎 var x *xorm.Engine func main() { //結合time.Since來記錄執行時間  now:=time.Now() //如果採用其他db driver,請置換driver name,這邊採用mssql  engine, err := xorm.NewEngine(" mssql ", "server=99.99.99.99;port=9999;user id=tester;password=999;database=TEST_DB")  if err != nil {   fmt.Println("新建引擎", err)   return  } //顯示sql  engine.ShowSQL(true)  var user [] User  engine.SQL("select * from TB_USER").Find(& user)  fmt.Println(user[0].String(), time.Since...