zoukankan      html  css  js  c++  java
  • Go语言读写数据库

    我用的驱动是:https://github.com/Go-SQL-Driver/MySQL

    理由跟 https://github.com/astaxie/build-web-application-with-golang/blob/master/05.2.md 的一样。

    • 比较新,更新维护的比较好;
    • 完全支持database/sql接口
    • 支持keepalive,保持长连接。

    安装

    $ go get github.com/go-sql-driver/mysql
    
    数据库连接语句
    import "database/sql"
    import _ "github.com/go-sql-driver/mysql" 
    db, e := sql.Open("mysql", "user:password@/dbname?charset=utf8")
    使用的数据表:

    CREATE TABLE `userinfo` (
    `uid` int(10) NOT NULL AUTO_INCREMENT,
    `username` varchar(64) DEFAULT NULL,
    `departname` varchar(64) DEFAULT NULL,
    `created` date DEFAULT NULL,
    PRIMARY KEY (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

    代码:
    package main
     
    import(
        "database/sql"
        "fmt"
        _"github.com/go-sql-driver/mysql"
    )
     
    func main(){
        db,err:=sql.Open("mysql","root:root@tcp(localhost:8889)/ghj1976test?charset=utf8")
        checkErr(err)
     
        //插入数据
        stmt,err:=db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
        checkErr(err)
     
        res,err:=stmt.Exec("ghj1976","RD部门","2013-03-18")
        checkErr(err)
     
        res,err=stmt.Exec("astaxie","RD部门","2012-12-09")
        checkErr(err)
     
        id,err:=res.LastInsertId()
        checkErr(err)
     
        fmt.Println(id)
     
        //修改数据
        stmt,err=db.Prepare("update user info set username=? where uid=?")
        checkErr(err)
     
        res,err=stmt.Exec("astaxieupdate",id)
        checkErr(err)
     
        affect,err:=res.RowsAffected()
        checkErr(err)
     
        fmt.Println(affect)
     
        //搜索数据
        rows,err:=db.Query("SELECT * FROM userinfo")
        checkErr(err)
     
        for rows.Next(){
            var uid int
            var username string
            var department string
            var created string
            err=rows.Scan(&uid,&username,&department,&created)
            checkErr(err)
            fmt.Println(uid)
            fmt.Println(username)
            fmt.Println(department)
            fmt.Println(created)
        }
     
        //删除数据
        stmt,err=db.Prepare("delete from user info where uid=?")
        checkErr(err)
     
        res,err=stmt.Exec(id)
        checkErr(err)
     
        affect,err=res.RowsAffected()
        checkErr(err)
     
        fmt.Println(affect) 
        db.Close()
    }
     
    func checkErr(err error){
        if err!=nil{
            panic(err)
        }
    }

    db.Prepare()函数用来返回准备要执行的sql操作,然后返回准备完毕的执行状态。
    db.Query()函数用来直接执行Sql返回Rows结果。
    stmt.Exec()函数用来执行stmt准备好的SQL语句


  • 相关阅读:
    Java技术 第六次实验 计科1501 胡开辉
    Java技术 第五次实验 计科1501 胡开辉
    Java第四次作业
    Java第三次作业
    Css新增内容
    Html5新增特性
    Jquery图集
    选项卡
    轮播图
    标准命名
  • 原文地址:https://www.cnblogs.com/ghj1976/p/2965357.html
Copyright © 2011-2022 走看看