【Go语言】golang 连接MySQL数据库

简要谈谈golang 连接数据库,并进行简单操作

首先,要有相关的驱动和相关的包

package main</code>
<code>
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"log"
)

然后要确定相关参数

 var host string = "localhost" //主机
var port string = "3306" //端口
var user string = "root" //用户名
var password string = "" //密码
var database string = "golangtest" //数据库名字

现在就可以连接数据库了

 //链接数据库
func connect(host, port, user, password, database string) *sql.DB {
conn := user + ":" + password + "@tcp(" + host + ":" + port + ")/" + database + "?charset=utf8"
db, err := sql.Open("mysql", conn)
CheckError(err)
fmt.Println("数据库连接成功")
return db
}

加一个检查错误的函数,经常使用

 //检查错误
func CheckError(err error) {
if err != nil {
log.Fatal(err)
}
}

封装好查询语句

 //执行查询语句
func Query(db *sql.DB, sql_query string) *sql.Rows {
rows, err := db.Query(sql_query) //执行查询
CheckError(err)
fmt.Println("查询成功")
return rows
}

获取字段

 //获取字段
func getColumns(rows *sql.Rows) []string {
columns, err := rows.Columns()
CheckError(err)
for k, v := range columns {
fmt.Println(k, v)
}
return columns
}

查询一个表中所有的记录

 //查询所有数据
func selectAll(db *sql.DB, table string) {
sql := "select * from " + table
rows := Query(db, sql) //执行查询
column := getColumns(rows) //获取字段
values := make([]string, len(column)) //保存value
scan := make([]interface{}, len(values)) //构造scan获取value
for i := range values {
scan[i] = &amp;values[i] //保存value
}

取得每一行

 //取得一行
for rows.Next() {
rows.Scan(scan...) //scan
for i := 0; i &lt; len(values); i++ {
fmt.Print(column[i], " : ") //打印
fmt.Println(values[i])
}
fmt.Println("#####")
}
}
func main() {
//连接数据库
db := connect(host, port, user, password, database)
//指定表
table := "tb_student"
//查出所有的记录
selectAll(db, table)
//构造sql
sql := "insert " + table + " set name=?,age=?,tel=?,qq=?"
//传参数
src := `"lkn", 1123, "13200902342", "211234245"`
//准备执行
stmt, err := db.Prepare(sql)
CheckError(err)
//执行SQL
stmt.Exec(src)
}

其实最原生态的数据库操作已经不怎么使用了,一般都是ORM实现。有时间专门讨论一下ORM的方式操作数据库。

刘凯宁@C2P
20140730

Share

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>