博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言学习-mysql
阅读量:5955 次
发布时间:2019-06-19

本文共 2794 字,大约阅读时间需要 9 分钟。

  hot3.png

mysql使用

sql语句

DROP TABLE IF EXISTS `person`;CREATE TABLE `person` (    `id` int(11) NOT NULL AUTO_INCREMENT,     `name` varchar(255) DEFAULT NULL,    `age` int(11) DEFAULT NULL,    `IsBoy` tinyint(4) DEFAULT NULL,     PRIMARY KEY (`id`))DEFAULT CHARSET=utf8;

sql语句使用

Query 返回的 rows,取完数据后需要调用 Close 来释放资源

package mainimport (	"fmt"	"database/sql"	_ "github.com/go-sql-driver/mysql")func main() {	db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")	if err != nil {		fmt.Println(err)		return	}	defer db.Close()	var result sql.Result	//向数据库中插入一条数据	result, err = db.Exec("insert into person(name,age,IsBoy) values(?,?, ?)", "张三 ", 19, true)	if err != nil {		fmt.Println(err)		return	}	lastId, _ := result.LastInsertId()	fmt.Println("新插入的数据 ID 为", lastId)	var row *sql.Row	//返回一行数据	row = db.QueryRow("select * from person")	var name string	var id, age int	var isBoy bool	//取数据进行显示	err = row.Scan(&id, &name, &age, &isBoy)	if err != nil {		fmt.Println(err)		return	}	fmt.Println(id, "\t", name, "\t", age, "\t", isBoy) //再插入一条数据	result, err = db.Exec("insert into person(name,age,IsBoy) values(?, ?, ?)", "王红", 18, false)	fmt.Println(" == == == == == == == == == == = ")	var rows *sql.Rows	rows, err = db.Query("select * from person")	if err != nil {		fmt.Println(err)		return	}	for rows.Next() {		var name string		var id, age int		var isBoy bool		rows.Scan(&id, &name, &age, &isBoy)		fmt.Println(id, "\t", name, "\t", age, "\t", isBoy)	}	rows.Close()	//最后,清空表	db.Exec("truncate table person")}

对 SQL 语句进行预处理

package mainimport (	"fmt"	"database/sql"	_ "github.com/go-sql-driver/mysql"	"math/rand"	"time")func main() {	db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")	if err != nil {		fmt.Println(err)		return	}	defer db.Close()	var smt *sql.Stmt	smt, err = db.Prepare("insert into person(name,age,IsBoy) values(?,?, ?)")	if err != nil {		fmt.Println(err)		return	}	fmt.Println("开始插入数据....", time.Now())	r := rand.New(rand.NewSource(time.Now().UnixNano()))	for i := 0; i < 10000; i++ {		_, err = smt.Exec(fmt.Sprintf("张%d", r.Int()), r.Intn(50), r.Intn(100) % 2)		if err != nil {			fmt.Println(err)			return		}	}	fmt.Println("数据插入完成!", time.Now())}

事务

package mainimport (	"fmt"	"database/sql"	_ "github.com/go-sql-driver/mysql")func main() {	db,err:=sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/test?charset=utf8")	if err != nil {		fmt.Println(err)		return	}	defer db.Close()	var trans *sql.Tx	trans, err = db.Begin()	if err != nil {		fmt.Println(err)		return	}	result,err := trans.Exec("insert into person(name,age,IsBoy)values('张三',99,false)")	if err != nil {		fmt.Println(err)		trans.Rollback()	}	fmt.Println(result.LastInsertId())	trans.Commit()	//最后,清空表	db.Exec("truncate table person")}

转载于:https://my.oschina.net/solate/blog/725071

你可能感兴趣的文章
Cocos2d-js-v3.2 在 mac 上配置环境以及编译到 Andorid 的注意事项(转)
查看>>
iOS用三种途径实现一方法有多个返回值
查看>>
python--class test
查看>>
从零开始理解JAVA事件处理机制(3)
查看>>
HttpURLConnection类的使用
查看>>
linux命令分析---SED (二)
查看>>
MyCat | 分库分表实践
查看>>
黄聪:is_file和file_exists效率比较
查看>>
Linux进程间通信——信号
查看>>
C# 3.0新语言特性和改进(一)
查看>>
MS Sql Server 数据库或表修复(DBCC CHECKDB)
查看>>
用友u8数据库表结构
查看>>
Amazon验证码机器算法识别
查看>>
Java中的抽象函数与C++中的虚函数
查看>>
docker安装执行问题
查看>>
用*号打印直角三角形(正反)
查看>>
Shell case
查看>>
20161120-安全测试
查看>>
[INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突。
查看>>
python学习笔记(十一):网络编程
查看>>