如何用Go语言连接mysql数据库
本文由Go小白编写,适合于Go小白观看,大神请指教。
1、首先是导包,下载地址 点击打开链接 下载解压后,放入工程根目录下,例如
4、如何书写数据库地址: 格式为:数据库用户名:数据库密码 @tcp(数据库所在主机的ip地址)/数据库的名称?charset=uft8
当然这是一个字符串,可以采用字符串拼接,下面给出模板,小白写的,大家只需要在前面定义好相关的变量值就可以直接使用了。要注意严格区分大小写
dbusername+":"+dbpassword+"@tcp("+dbhostip+")/"+dbname+"?charset=utf8"
5、简单判断一下err是否为nil来判断是否连接成功。接下来就是进行CRUD操作了
6、增删改:如果有学过Java数据库的话,下面比较好理解。对于一个sql语句,在GO/Java中都是一个字符串,而大多数的字符串都是拼接而成的。因此就会有两种情况
(1)整个sql语句是完整确认的,这样的sql语句,我们采用 result,err:=db.Exec(sql语句) 比较合适
(2)sql语句不是确定的,是要通过变量来拼接的,那么使用通配符? 这点与Java一致,则使用如下的函数:
stmt,err:=db.Prepare(带?的sql语句)
result,err:=stmt.Exec(按照顺序以逗号分隔?的值) (其实就是Java里面的PreparedStatement)
最终通过result可以看到一些返回值,例如影响几行等
7、查询:这是数据库操作的难点:也是分为6中的两种情况,只不过将Exec()换成Query(),这样result就是查询到的结果,
之后便是遍历 for result.Next(){ } 想获取结果值,需要定义一个变量,然后按照顺序result.Scan(&V1,&v2,); 这样值就传给了V1,V2
8、最后,没有难度,但是重要也是极其容易忽视的问题,关闭资源
9,最后贴一点很乱的代码(其实看完前面8个 你是不需要看代码的 啊哈哈 ,总得为自己懒得整理代码找点接口)
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
//下面填写自己的数据库信息,看不懂英文?这都看不懂还学啥编程。不知道数据库信息?那还用啥数据库。
var (
dbhostip=""
dbusername=""
dbpassword=""
dbname=""
)
func checkErr(err error){
if err!=nil{
panic(err)
}
}
func main(){
db,err:=sql.Open("mysql",dbusername+":"+dbpassword+"@tcp("+dbhostip+")/"+dbname+"?charset=utf8")
checkErr(err)
stmt,err:=db.Prepare("SELECT * FROM note where year =?")
checkErr(err)
rows ,err :=stmt.Query("100")
checkErr(err)
for rows.Next() {
var year string
var month string
var day string
var thing string
var money string
err :=rows.Scan(&year,&month,&day,&thing,&money)
checkErr(err)
fmt.Println(year,month,day,money,thing)
}
defer db.Close()
defer stmt.Close()
defer rows.Close()
//
//stmt,err:=db.Prepare("insert into note values (?,?,?,?,?)")
//checkErr(err)
//result,err:=stmt.Exec("888","888","888","78","79")
result,err:=db.Exec("delete from note where year=1")
checkErr(err)
fmt.Println(result.LastInsertId())
}