GoLang学习(四)

现如今做个产品避免不了要用到数据库,GoLang做为新语言当然也提供了相关的函数库。运行环境中提供了database/sql模块,这个里面相当于Java的JDBC做了做了一些规范,但不同的是它默认有了一些实现。
GoLang对数据库的操作用起来很简单,不用写太多的代码,相对来说功能也比较少,日常用到的功能差不多都有了,没有找到批量提交功能。

以MySQL数据库举例,这也是最常用的数据库了,首先去官网下载驱动程序。

//要导入相关模块
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
import "fmt"
 
func test1(){
//这个URL地址看起来很奇怪
//完成的格式:[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]
db, e := sql.Open("mysql", "user:[email protected](1.1.1.1:3306)/databasename?charset=utf8")
defer db.Close()
if e!=nil{
    fmt.Printf("open Db error : %s\n",e.Error())
}
//接受一个interface{}数组做为参数,interface还不支持自定义结构。
rows,e := db.Query("select a,b,c from  xxxxx where x=? limit 10",10)
//打印出结果集中全部的列。
if columns ,err := rows.Columns();err==nil{
    fmt.Printf("columns : %#v\n",columns)
}
if e==nil{
   for ;rows.Next();{
        var a int
        var b int
        var c int
        //看到Scan函数别高兴,它同样不支持自定义的结构。
        e:=rows.Scan(&a,&b,&c)     
        if e==nil{
            fmt.Printf("result : %#v\n",obj)
        }else{
            fmt.Printf("scan error : %s\n",e.Error())
        }
   }
   rows.Close()
}
}
func main(){
test1()
}

DB结构里面还有预处理方法、事务方法、DB本身就是一个连接池。用起来很方便,使用很少的代码完成工作。。。。
入门扫盲结束,下一次介绍如何实现类似iBatis这样的轻量级框架。。。

分享到: 更多