栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否存在Go Mysql驱动程序,该驱动程序在单个字符串中支持多个语句?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否存在Go Mysql驱动程序,该驱动程序在单个字符串中支持多个语句?

https://github.com/ziutek/mymysql

可以做到。尽管您必须使用其接口与已定义的接口。go官方接口无法处理它,或有多个返回值。

package mainimport (    "flag"    "fmt"    "github.com/ziutek/mymysql/autorc"    "github.com/ziutek/mymysql/mysql"    _ "github.com/ziutek/mymysql/thrsafe")type ScanFun func(int, []mysql.Row, mysql.Result) errorfunc RunSQL(hostport, user, pass, db, cmd string, scan ScanFun) error {    conn := autorc.New("tcp", "", hostport, user, pass, db)    err := conn.Reconnect()    if err != nil {        return err    }    res, err := conn.Raw.Start(cmd)    if err != nil {        return err    }    rows, err := res.GetRows()    if err != nil {        return err    }    RScount := 0    scanErr := error(nil)    for {        if scanErr == nil { func() {     defer func() {         if x := recover(); x != nil {  scanErr = fmt.Errorf("%v", x)         }     }()     scanErr = scan(RScount, rows, res) }()        }        if res.MoreResults() { res, err = res.NextResult() if err != nil {     return err } rows, err = res.GetRows() if err != nil {     return err }        } else { break        }        RScount++    }    return scanErr}func main() {    host := flag.String("host", "localhost:3306", "define the host where the db is")    user := flag.String("user", "root", "define the user to connect as")    pass := flag.String("pass", "", "define the pass to use")    db := flag.String("db", "information_schema", "what db to default to")    sql := flag.String("sql", "select count(*) from columns; select * from columns limit 1;", "Query to run")    flag.Parse()    scan := func(rcount int, rows []mysql.Row, res mysql.Result) error {        if res.Statusonly() { return nil        }        for idx, row := range rows { fmt.Print(rcount, "-", idx, ") ") for i, _ := range row {     fmt.Print(row.Str(i))     fmt.Print(" ") } fmt.Println("")        }        return nil    }    fmt.Println("Host - ", *host)    fmt.Println("Db   - ", *db)    fmt.Println("User - ", *user)    if err := RunSQL(*host, *user, *pass, *db, *sql, scan); err != nil {        fmt.Println(err)    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417774.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号