首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go实现对MySQL的增删改查 原

Go实现对MySQL的增删改查 原

作者头像
克虏伯
发布2019-04-15 15:44:05
1.1K0
发布2019-04-15 15:44:05
举报

开发环境:windows7 64位、编辑器是sublime text3。 直接添上代码了,代码中有注释。 注:需要提前下载github.com/go-sql-driver/mysql,下面的程序才会运行成功。 package main

import ( "database/sql" //这个感觉有点类似java中的java.sql.* "fmt" _ "github.com/go-sql-driver/mysql" //这个感觉类似于jdbc )

func main() { //主函数,调用不同的方法 //Insert() //Delete() //Update() //Query() QueryWithParams() //QueryWithParam() }

//得到数据库的连接,并将连接返回 func Init() (*sql.DB, error) { //返回类型有俩个,第一个是数据库的连接(指针),第二个是错误类型 //得到数据库的连接,"test"表示的是数据库名称 db, err := sql.Open("mysql", "root:dmj2010@tcp(localhost:3306)/test?charset=utf8") if err != nil { //err的值不是nil那么表示打开数据库连接失败 fmt.Println("打开数据库连接失败_" + err.Error()) return nil, err } return db, nil //返回的错误类型是nil,表示成功得到数据库连接 }

//向数据库中插入数据 func Insert() { //这个函数没有参数,也没有返回值 db, err := Init() //得到数据库连接

if err != nil { //if语句的判断语句不用加括号
	fmt.Println("得到数据库连接有问题")
	return
}

sql := "insert into user(name,age) values(?,?)"
stmt, err := db.Prepare(sql)
if err != nil {
	fmt.Println("错误——" + err.Error())
	return
}

defer stmt.Close() //表示当程序退出当前所在的函数(即Insert())时关闭stmt
defer db.Close()   //表示当程序退出时当前所在的函数(即Insert())时关闭数据库连接db

fmt.Println("开始插入数据")
stmt.Exec("张三", 20) //设置参数并进行插入数据
stmt.Exec("李四", 45) //设置参数并进行插入数据
stmt.Exec("段幕", 36) //设置参数并进行插入数据
fmt.Println("插入结束")

}

//删除数据 func Delete() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return } sql := "delete from user where id=?" stmt, err := db.Prepare(sql) if err != nil { fmt.Println("删除失败——" + err.Error()) return } defer stmt.Close() defer db.Close()

stmt.Exec(1) //设置参数,即id的值为1
stmt.Exec(2) //设置参数,即id的值为2

}

//更新数据 func Update() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return } sql := "update user set name=?,age=? where id=?" stmt, err := db.Prepare(sql) if err != nil { fmt.Println("更新失败——" + err.Error()) return } defer stmt.Close() defer db.Close()

stmt.Exec("木婉清", 123, 3)
stmt.Exec("曾小邪", 18, 4)
stmt.Exec("其二", 23, 5)

}

//查询数据 func Query() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return }

rows, err := db.Query("select * from user")
if err != nil {
	fmt.Println("查询失败——" + err.Error())
	return
}

for rows.Next() { //rows.Next()返回的是bool值
	var id int      //声明id为int型
	var name string //声明name为string型
	var age int     //声明age为int型
	err := rows.Scan(&id, &name, &age)
	if err != nil {
		fmt.Println("rows.Scan失败!——" + err.Error())
		return
	} //if

	//fmt.Printf(....) 这个有点类似C中的printf(...)
	fmt.Printf("id:%d  name:%s age:%d \n", id, name, age) //%d表示显示整形数值 %s表示显示字符串
} //for

defer rows.Close()
defer db.Close()

}

//查询数据,有参数设置&&返回值有多行 func QueryWithParams() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return }

rows, err := db.Query("select * from user where age=?", 20)

if err != nil {
	fmt.Println("查询失败——" + err.Error())
	return
}

for rows.Next() { //rows.Next()返回的是bool值
	var id int
	var name string
	var age int
	err := rows.Scan(&id, &name, &age)
	if err != nil {
		fmt.Println("rows.Scan失败!——" + err.Error())
		return
	} //if

	//fmt.Printf(....) 这个有点类似C中的printf(...)
	fmt.Printf("id:%d  name:%s age:%d \n", id, name, age) //%d表示显示整形数值 %s表示显示字符串
} //for

defer rows.Close()
defer db.Close()

}

//查询数据,有参数设置&&返回值最多只有一行 func QueryWithParam() { db, err := Init() if err != nil { fmt.Println("得到数据库连接结果失败——" + err.Error()) return }

var id int
var name string
var age int

row := db.QueryRow("select * from user where id=?", 3)
err = row.Scan(&id, &name, &age)
if err != nil {
	fmt.Println("查询失败——" + err.Error())
	return
}
//fmt.Printf(....) 这个有点类似C中的printf(...)
fmt.Printf("id:%d  name:%s age:%d \n", id, name, age) //%d表示显示整形数值 %s表示显示字符串

defer db.Close()

}

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015/11/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档