go语言代码连接mysql_go语言六——连接mysql

首先go-driver-sql的mysql版本,我通过

gogetcode.google.com/p/go-mysql-driver/mysql

安装失败,貌似是git版本不够新的缘故,不过用不着这么麻烦,直接去github下载源代码即可,解压到/usr/local/go/src/pkg/mysql目录

package main

// 导入sql包, 跟java.sql类似的

import "database/sql"

import _ "mysql"

import "encoding/json"

import "fmt"

// 定义一个结构体, 需要大写开头哦, 字段名也需要大写开头哦, 否则json模块会识别不了

// 结构体成员仅大写开头外界才能访问

type User struct {

User string `json:"user"`

Password string `json:"password"`

Host string `json:"host"`

}

// 一如既往的main方法

func main() {

// 格式有点怪, @tcp 是指网络协议(难道支持udp?), 然后是域名和端口

db, e := sql.Open("mysql", "root:pwd@tcp(localhost:3306)/mysql?charset=utf8")

if e != nil { //如果连接出错,e将不是nil的

fmt.Println("ERROR?")

return

}

// 提醒一句, 运行到这里, 并不代表数据库连接是完全OK的, 因为发送第一条SQL才会校验密码 汗~!

_, e2 := db.Query("select 1")//生产环境去掉这句,不然会有内存泄漏

if e2 == nil {

fmt.Println("DB OK")

rows, e := db.Query("select user,password,host from mysql.user")

if e != nil {

fmt.Print("query error!!%v\n", e)

return

}

if rows == nil {

fmt.Println("Rows is nil")

return

}

for rows.Next() { //跟java的ResultSet一样,需要先next读取

user := new(User)

// rows貌似只支持Scan方法 继续汗~! 当然,可以通过GetColumns()来得到字段顺序

row_err := rows.Scan(&user.User,&user.Password, &user.Host)

if row_err != nil {

fmt.Println("Row error!!")

return

}

b, _ := json.Marshal(user)

fmt.Println(string(b)) // 这里没有判断错误, 呵呵, 一般都不会有错吧

}

fmt.Println("Done")

} else {

fmt.Println(e)

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值