mirror of
https://github.com/documize/community.git
synced 2025-07-21 14:19:43 +02:00
Update SQL Server driver library
This commit is contained in:
parent
c538fc9eb1
commit
9c36241b58
37 changed files with 9138 additions and 1091 deletions
119
vendor/github.com/denisenkom/go-mssqldb/examples/tsql/tsql.go
generated
vendored
Normal file
119
vendor/github.com/denisenkom/go-mssqldb/examples/tsql/tsql.go
generated
vendored
Normal file
|
@ -0,0 +1,119 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"database/sql"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
_ "github.com/denisenkom/go-mssqldb"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var (
|
||||
userid = flag.String("U", "", "login_id")
|
||||
password = flag.String("P", "", "password")
|
||||
server = flag.String("S", "localhost", "server_name[\\instance_name]")
|
||||
database = flag.String("d", "", "db_name")
|
||||
)
|
||||
flag.Parse()
|
||||
|
||||
dsn := "server=" + *server + ";user id=" + *userid + ";password=" + *password + ";database=" + *database
|
||||
db, err := sql.Open("mssql", dsn)
|
||||
if err != nil {
|
||||
fmt.Println("Cannot connect: ", err.Error())
|
||||
return
|
||||
}
|
||||
err = db.Ping()
|
||||
if err != nil {
|
||||
fmt.Println("Cannot connect: ", err.Error())
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
r := bufio.NewReader(os.Stdin)
|
||||
for {
|
||||
_, err = os.Stdout.Write([]byte("> "))
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
cmd, err := r.ReadString('\n')
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
fmt.Println()
|
||||
return
|
||||
}
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
err = exec(db, cmd)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func exec(db *sql.DB, cmd string) error {
|
||||
rows, err := db.Query(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer rows.Close()
|
||||
cols, err := rows.Columns()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if cols == nil {
|
||||
return nil
|
||||
}
|
||||
vals := make([]interface{}, len(cols))
|
||||
for i := 0; i < len(cols); i++ {
|
||||
vals[i] = new(interface{})
|
||||
if i != 0 {
|
||||
fmt.Print("\t")
|
||||
}
|
||||
fmt.Print(cols[i])
|
||||
}
|
||||
fmt.Println()
|
||||
for rows.Next() {
|
||||
err = rows.Scan(vals...)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
continue
|
||||
}
|
||||
for i := 0; i < len(vals); i++ {
|
||||
if i != 0 {
|
||||
fmt.Print("\t")
|
||||
}
|
||||
printValue(vals[i].(*interface{}))
|
||||
}
|
||||
fmt.Println()
|
||||
|
||||
}
|
||||
if rows.Err() != nil {
|
||||
return rows.Err()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func printValue(pval *interface{}) {
|
||||
switch v := (*pval).(type) {
|
||||
case nil:
|
||||
fmt.Print("NULL")
|
||||
case bool:
|
||||
if v {
|
||||
fmt.Print("1")
|
||||
} else {
|
||||
fmt.Print("0")
|
||||
}
|
||||
case []byte:
|
||||
fmt.Print(string(v))
|
||||
case time.Time:
|
||||
fmt.Print(v.Format("2006-01-02 15:04:05.999"))
|
||||
default:
|
||||
fmt.Print(v)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue