go访问mysql基本语法
package main import ( _ "context" "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" uuid "github.com/satori/go.uuid" ) /* CREATE TABLE `t_user_info` ( `uuid` varchar(32) NOT NULL COMMENT '主键UUID', `user_name` varchar(40) DEFAULT NULL DEFAULT '' COMMENT '用户名称', PRIMARY KEY (`uuid`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户信息'; */ func main() { db,err := sql.Open( "mysql" , "用户名:密码@tcp(ip:3306)/库名?charset=utf8" ) if err != nil { fmt.Printf( "connect mysql fail [%s]" ,err) } else { fmt.Println( "connect to mysql succes." ) } //查询 rows,err := db.Query( "select uuid,user_name from t_user_info" ) if err != nil { fmt.Printf( "select fail [%s]" ,err) return } for rows.Next() { var uuid string var user_name string rows.Columns() err := rows.Scan(&uuid, &user_name) if err != nil { fmt.Printf( "get user info error [%s]" , err) } else { fmt.Println(uuid, user_name) } } //开启事务 conn,err := db.Begin() if err != nil { fmt.Printf( "open transaction error [%s]" ,err) return } //添加 stmt,err :=db.Prepare( "insert into t_user_info values(?,?)" ) //stmt,err :=db.Prepare("insert t_user_info set uuid = ?,user_name = ?") if err != nil { fmt.Printf( "Pretreatment fail [%]" ) return } //生成uuid开始 id,err := uuid.NewV4() if err != nil { fmt.Printf( "get uuid error [%s]" ,err) } fmt.Printf( "github.com/satori/go.uuid: %s\n" , id) //生成uuid结束 res,err := stmt.Exec(id, "test3" ) //res,err := stmt.Exec("2d2e4ebfcb864213a0b6a71d400f1cd9","test2") if err != nil { fmt.Printf( "Pretreatment fail [%]" ) //事务回滚 conn.Rollback() return } num,err := res.RowsAffected() if err != nil { fmt.Printf( "insert fail [%s]" ,err) } fmt.Printf( " Number of rows affected [%v]" ,num) //提交事务 conn.Commit() //删除 //stmt,err :=db.Prepare("delete from t_user_info where uuid = ?") //if err != nil { // fmt.Printf("Pretreatment fail [%s]",err) // return //} //res,err := stmt.Exec("2d2e4ebfcb864213a0b6a71d400f1cd9") //if err != nil { // fmt.Printf("Pretreatment fail [%s]",err) // return //} //num,err := res.RowsAffected() //if err != nil { // fmt.Printf("delete fail [%s]",err) //} //fmt.Printf(" Number of rows affected [%v]",num) //修改 //stmt,err :=db.Prepare("update t_user_info set user_name = 'golang' where uuid = ?") //if err != nil { // fmt.Printf("Pretreatment fail [%s]",err) // return //} //res,err := stmt.Exec("7a84e9e5163d4861b341b12a536a6a0d") //if err != nil { // fmt.Printf("Pretreatment fail [%s]",err) // return //} //num,err := res.RowsAffected() //if err != nil { // fmt.Printf("update fail [%s]",err) //} //fmt.Printf(" Number of rows affected [%v]",num) } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析