package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
//插入数据
func insertlab() {
/*
mysql连接三步:
1.打开连接
2.预处理sql
3.读取结果
4.关闭
*/
//1.打开连接
dsn := `root:123456@tcp(localhost:3306/dbname)`
db, err := sql.Open("mysql", dsn)
db.Ping()
//4.关闭数据库
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败")
return
}
//2.预处理sql,?-->占位符
insert := `insert into per values(?,?)`
stmt, err := db.Prepare(insert)
//4.关闭预处理语句
defer func() {
if stmt != nil {
stmt.Close()
}
}()
if err != nil {
fmt.Println("预处理错误,")
return
}
//参数和对应占位符号对应
ret, err := stmt.Exec("张三", "北京海淀")
if err != nil {
fmt.Println("插入失败,")
return
}
//3.读取结果
count, err := ret.RowsAffected()
if err != nil {
fmt.Println("结果获失败,")
return
}
if count > 0 {
fmt.Println("新增成功!")
} else {
fmt.Println("新增失败!")
}
//其他 ,有时候需要获取新增主键的值
id, _ := ret.LastInsertId()
fmt.Println(id)
}
//更新
func updatelab() {
//1.打开连接
dsn := `root:123456@tcp(localhost:3306/dbname)`
db, err := sql.Open("mysql", dsn)
db.Ping()
//4.关闭数据库
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败")
return
}
//2.预处理sql,?-->占位符
updatelab := `update per set name=? address=? whereid=?`
stmt, err := db.Prepare(updatelab)
//4.关闭预处理语句
defer func() {
if stmt != nil {
stmt.Close()
}
}()
if err != nil {
fmt.Println("预处理错误,")
return
}
//参数和对应占位符号对应
ret, err := stmt.Exec("张三", "北京海淀", 3)
if err != nil {
fmt.Println("插入数据理错误,")
return
}
count, _ := ret.RowsAffected()
if count > 0 {
fmt.Println("修改成功")
} else {
fmt.Println("修改失败")
}
}
//删除数据
func deletelab() {
//1.打开连接
dsn := `root:123456@tcp(localhost:3306/dbname)`
db, err := sql.Open("mysql", dsn)
db.Ping()
//4.关闭数据库
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败")
return
}
//2.预处理sql,?-->占位符
deltesql := `delete from per where id=?`
stmt, err := db.Prepare(deltesql)
//4.关闭预处理语句
defer func() {
if stmt != nil {
stmt.Close()
}
}()
if err != nil {
fmt.Println("预处理错误,")
return
}
//参数和对应占位符号对应
ret, err := stmt.Exec(3)
if err != nil {
fmt.Println("插入失败,")
return
}
count, _ := ret.RowsAffected()
if count > 0 {
fmt.Println("删除成功!")
}
}
//查询
func query() {
//1.打开连接
dsn := `root:123456@tcp(localhost:3306/dbname)`
db, err := sql.Open("mysql", dsn)
db.Ping()
//4.关闭数据库
defer func() {
if db != nil {
db.Close()
}
}()
if err != nil {
fmt.Println("数据库连接失败")
return
}
//2.预处理sql,?-->占位符
deltesql := `delete from per where id=?`
stmt, err := db.Prepare(deltesql)
//4.关闭预处理语句
defer func() {
if stmt != nil {
stmt.Close()
}
}()
if err != nil {
fmt.Println("预处理错误,")
return
}
//查询参数
rows, err := stmt.Query()
if err != nil {
fmt.Println("查询失败!")
}
//循环遍历结果
rows.Next(){
var id int
var name,address string
//把行内值付给变量
rows.Scan(&id,&name,&address)
fmt.Println(id,name,address)
}
defer func() {
if rows!=nil{
rows.Close()
fmt.Println("关闭结果集")
}
}()
}
func main() {
query()
}
golang mysql 错误类型 golang操作mysql
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
golang操作mysql
后台开发语言访问数据库
golang Go编程 编程开发 -
xcode打包 testflight
目前有个需求,需要把.xib封装到静态库中,试了很多种方法都不行,最后看到 这篇文章 ,它是从 iOS Library With Resources 翻译过来的,图片没有显示(原文有)。 这里主要是把静态库种的.xib封装到bundle中,然后把静态库内链到工程中。 1 添加资源Bundle Target
xcode打包 testflight ios7 xcode 静态库 bundle 静态库