golang数据库操作

一、准备

1、MySQL :数据库服务端

2、MySQL Workbench:图形界面,用于连接数据库,对数据库进行操作

3、连接数据库并创建表


golang数据库操作_第1张图片
golang数据库操作_第2张图片
golang数据库操作_第3张图片
golang数据库操作_第4张图片

二、引入driver

import(

"database/sql"

_"github.com/go-sql-driver/mysql"// "_" 引入后面的包名 而不直接使用里面的定义的函数、变量、资源等

)

三、连接数据库

db,err := sql.Open("mysql","用户名:密码@tcp(127.0.0.1:3306)/demo?charset=utf8")

Tool.Check("打开数据库",err)

//执行Open函数的时候,并不会去获得数据库连接有效性,当执行数据库操作的时候才会去连接,

// 当我们需要在Open之后就知道连接的有效性的时候,可以通过Ping()来进行

err = db.Ping()

Tool.Check("连接的有效性",err)

四、插入数据

res,err := db.Exec("INSERT INTO test(name1,age) VALUES('程咬金',9000)")

Tool.Check("插入数据",err)

id,err := res.LastInsertId()

Tool.Check("插入的id",err)

log.Println(id)

五、更新数据

res,err := db.Exec("UPDATE test SET age = ? WHERE name1 = ?",1000000,"程咬金")

Tool.Check("更新数据",err)

id,err := res.LastInsertId()

Tool.Check("更新的id",err)

log.Println(id)

六、删除数据

res,err := db.Exec("DELETE  FROM test WHERE  name1 = ?","程咬金")

Tool.Check("删除数据",err)

id,err := res.LastInsertId()

Tool.Check("删除数据的id",err)

log.Println(id)

七、预备表达式

//预备表达式 用来优化SQL查询 提高性能 减少SQL注入的风险

stmt,err := db.Prepare("UPDATE test SET age = ? WHERE name1 = 1 OR 1=1;")

Tool.Check("获取行",err)

_,err = stmt.Exec("90909090","达摩")

Tool.Check("更新数据",err)

八、关闭数据库

defer db.Close()

九、遇到的错误

1.ERROR 1366: 1366: Incorrect string value: '\xE6\x98\xAF\xE7\x9A\x84' for column 'name' at row 1

SQL Statement:

原因是: 创建数据库的时候数据编码设置错误

你可能感兴趣的:(golang数据库操作)