ysoren 发表于 2018-9-20 10:52:10

golang gbk转utf8 mssql access

package main  

  
import (
  

"database/sql"  
"fmt"
  

  
"github.com/go-ole/go-ole"
  
"github.com/go-ole/go-ole/oleutil"
  
_ "github.com/mattn/go-adodb"
  
)
  

  
func createMdb(f string) error {
  
unk, err := oleutil.CreateObject("ADOX.Catalog")
  
if err != nil {
  
return err
  
}
  
cat, err := unk.QueryInterface(ole.IID_IDispatch)
  
if err != nil {
  
return err
  
}
  
_, err = oleutil.CallMethod(cat, "Create", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+f+";")
  
if err != nil {
  
return err
  
}
  
return nil
  
}
  

  
func main() {
  
ole.CoInitialize(0)
  

  
f := "E:\\access\\x.mdb"
  

  
/*os.Remove(f)
  

  
err := createMdb(f)
  
if err != nil {
  
fmt.Println("create mdb", err)
  
return
  
}*/
  

  
db, err := sql.Open("adodb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+f+";")
  
if err != nil {
  
fmt.Println("open", err)
  
return
  
}
  
fmt.Println(db)
  
/*
  
_, err = db.Exec("create table foo (id int not null primary key, name text not null, created datetime not null)")
  
if err != nil {
  
fmt.Println("create table", err)
  
return
  
}
  

  
tx, err := db.Begin()
  
if err != nil {
  
fmt.Println(err)
  
return
  
}
  
stmt, err := tx.Prepare("insert into foo(id, name, created) values(?, ?, ?)")
  
if err != nil {
  
fmt.Println("insert", err)
  
return
  
}
  
defer stmt.Close()
  

  
for i := 0; i < 100; i++ {
  
_, err = stmt.Exec(i, fmt.Sprintf("xxx", i), time.Now())
  
if err != nil {
  
fmt.Println("exec", err)
  
return
  
}
  
}
  
tx.Commit()*/
  

  
rows, err := db.Query("select UserID, DeviceID from UserACPrivilege")
  
if err != nil {
  
fmt.Println("select", err)
  
return
  
}
  
defer rows.Close()
  

  
for rows.Next() {

  
var>  
var name string
  
err = rows.Scan(&id, &name)
  
if err != nil {
  
fmt.Println("scan", err)
  
return
  
}
  
fmt.Println(id, name)
  
}
  
}


页: [1]
查看完整版本: golang gbk转utf8 mssql access