GO连接数据库--踩坑(超详细)

GO连接数据库--踩坑(超详细),第1张

当使用go语言对数据进行连接时需要几部 *** 作:

1.数据库侧:

需要允许远程连接,具体 *** 作方法详见:本地主机连接阿里云数据库(自建数据库)排雷_秋为春的博客-CSDN博客

2.GO侧

1)需要引入go-sql-driver驱动

常见的引入方法有两种:

①通过命令行——前提是go的各个环境变量要配置好

go get -u github.com/go-sql-driver/mysql

②通过git进行复制

首先你的电脑要支持git这个命令,如果不支持需要下载安装Git下载地址给你放这了:

Git for Windows

下载安装后,直接把驱动Git到go path目录下:

git clone github.com/go-sql-driver/mysql

之后在go中使用用这个驱动:

import (
   "database/sql"
   "fmt"
   _ "mysql"     //引入
)

验证是否可以使用go对数据库进行 *** 作:

首先创建一个数据库:

create database test;

以及一个表:

create table table(

id int(4),

name char(20)

)

通过GO代码对数据库进行简单 *** 作:

语法详解:


sql.open(驱动名,数据源dsn)(*DB,err)

数据源语法:"用户名:密码@[连接方式](主机名:端口号)/数据库名"

注意:open()在执行时不会真正的与数据库进行连接,只是设置连接数据库需要的参数
ping()方法才是连接数据库

代码 *** 作: 

package main
import (
"database/sql"
"fmt"
_ "mysql"
)
func main() {
	db, err := sql.Open("mysql", "root:xxx@(xxxx:3306)/test")
	checkErr(err)
	// insert
	stmt, err := db.Prepare("INSERT ta SET id=?,name=?")
	checkErr(err)
	res, err := stmt.Exec(1, "wang")
	checkErr(err)
	// update
	stmt, err = db.Prepare("update ta set name=? where id=?")
	checkErr(err)
	res, err = stmt.Exec("wang", 1)
	checkErr(err)
	affect, err := res.RowsAffected()
	checkErr(err)
	fmt.Println(affect)
	// query
	rows, err := db.Query("SELECT * FROM ta")
	checkErr(err)
	for rows.Next() {
		var uid int
		var username string
		err = rows.Scan(&uid, &username)
		checkErr(err)
		fmt.Println(uid)
		fmt.Println(username)
	}
	// delete
	stmt, err = db.Prepare("delete from ta where id=?")
	checkErr(err)
	res, err = stmt.Exec(1)
	checkErr(err)
	// query
	rows, err = db.Query("SELECT * FROM ta")
	checkErr(err)
	for rows.Next() {
		var uid int
		var username string
		err = rows.Scan(&uid, &username)
		checkErr(err)
		fmt.Println(uid)
		fmt.Println(username)
	}
	db.Close()
}
func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

验证:

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/994517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存