一.查询注意点
- Golang中执行查询与新增、删除、修改中stmt的执行方法有区别,由于需要把查询到的结果取出来,所以还需要进行取值处理
二.代码示例
package mainimport ( "fmt" //驱动已经放入到标准库文件夹,由于不使用所以需要空导入,在前面添加_ _ "github.com/go-sql-driver/mysql" //Golang中数据库操作包 "database/sql")func main() { /* 第一个参数:连接什么数据库 第二个参数:连接字符串 语法:数据库登录用户名:密码@tcp(mysql主机ip:端口)/database名称 */ db,err:=sql.Open("mysql","root:root@tcp(localhost:3306)/first") db.Ping() //Error处理 if err!=nil{ fmt.Println("数据库连接失败") } //关闭连接 defer func() { if db!=nil{ db.Close() fmt.Println("关闭连接") } }() /* 准备处理SQL语句 支持占位符,防止SQL注入 */ stmt,err:=db.Prepare("select * from people") //错误处理 if err!=nil{ fmt.Println("预处理失败",err) } //关闭对象 defer func() { if stmt!=nil{ stmt.Close() fmt.Println("stmt关闭") } }() /* Exec() 参数为不定项参数,对应占位符?个数 */ rows,err:=stmt.Query() if err!=nil{ fmt.Println("查询失败",err) } //循环遍历结果 for 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("关闭结果集") } }()}