golang数据库操作

vet_ · · 14901 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、准备

1、MySQL :数据库服务端

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

3、连接数据库并创建表






二、引入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:

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:vet_

查看原文:golang数据库操作

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

14901 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传