- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
详解Go语言中的数据库操作
目录原生SQL方式ORM方式数据库是应用开发中必须要掌握的技巧,通常在数据库开发过程中,会有两种不同的方式:
直接使用SQL语句,这种方式下,直接编写SQL,简单直观,但是可维护性较差,同时对于数据库依赖性比较强使用ORM方式,将数据库映射到对象上,方便操作,而且可以跨数据库使用,也是开发框架中最常用的使用方式;同时,采用Migration管理数据库Schema,形成版本控制
以下代码及部分解释由chatGPT生成
原生SQL方式
这段代码实现了一个Go程序,它使用了标准库中的database/sql包来连接MySQL数据库并查询表。
packagemain
import(
database/sql
fmt
_/go-sql-driver/mysql
funcmain(){
db,err:=sql.Open(mysql,username:password@tcp(host:port)/dbname)
iferr!=nil{
panic(err.Error())
deferdb.Close()
rows,err:=db.Query(SELECT*FROMtable_name)
iferr!=nil{
panic(err.Error())
deferrows.Close()
columns,err:=rows.Columns()
iferr!=nil{
panic(err.Error())
values:=make([]sql.RawBytes,len(columns))
scanArgs:=make([]interface{},len(values))
fori:=rangevalues{
scanArgs[i]=values[i]
forrows.Next(){
err=rows.Scan(scanArgs...)
iferr!=nil{
panic(err.Error())
varvaluestring
fori,col:=rangevalues{
ifcol==nil{
value=NULL
}else{
value=string(col)
fmt.Println(columns[i],:,value)
fmt.Println(-----------------------------------)
iferr=rows.Err();err!=nil{
panic(err.Error())
首先,通过调用sql.Open()函数并传入mysql作为驱动名称和一个连接字符串来打开数据库连接。如果打开连接失败,程序会panic。
接下来,使用db.Query()函数执行SQL查询语句,并将结果保存到变量rows中。如果查询失败,程序会panic。
之后,调用rows.Columns()函数获取表的列名,并在循环中调用rows.Next()函数来遍历查询结果。在每次循环中,调用rows.Scan()函数将当前行的数据读取到values数组中。然后,遍历values数组,并将每列的值输出到控制台。
最后,使用rows.Err()函数检查是否有任何错误,并在有错误时panic。
注意:
需要先安装/go-sql-driver/mysql连接字符串需要替换成自己的连接信息查询语句需要替换成自己的表名
ORM方式
ORM(Object-RelationalMapping)是一种将关系数据库中的数据映射到对象上的技术。在Go语言中,可以使用第三方库gorm来实现ORM数据库访问,该库也是Go语言使用较为广泛的ORM库。
下面是一个简单的例子,它使用gorm库来连接MySQL数据库并查询表:
packagemain
import(
fmt
/jinzhu/gorm
_/jinzhu/gorm/dialects/mysql
typeProductstruct{
gorm.Model
Codestring
Priceuint
funcmain(){
db,err:=gorm.Open(mysql,userna
文档评论(0)