【Go语言】连接数据库SQLite、MySQL、Oracle - Mike_zh

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
本文目录

说明: go语言连接数据库不像Java那么方便,本文分别介绍了连接三种典型的数据库的驱动以及连接方法:小型,SQLite;中型,MySQL;大型,Oracle.

1.Go连接SQLite

1_1.SQLite推荐驱动

https://github.com/mattn/go-sqlite3

1_2.SQLite连接示例代码

示例代码如下:

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/mattn/go-sqlite3"
	"log"
	"os"
)

type Users struct {
	UserId int
	Uname  string
}

func main() {
	os.Remove("./foo.db")

	db, err := sql.Open("sqlite3", "./foo.db")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	sql := `create table users (userId integer, uname text);`
	db.Exec(sql)
	sql = `insert into users(userId,uname) values(1,'Mike');`
	db.Exec(sql)
	sql = `insert into users(userId,uname) values(2,'John');`
	db.Exec(sql)
	rows, err := db.Query("select * from users")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()
	var users []Users = make([]Users, 0)
	for rows.Next() {
		var u Users
		rows.Scan(&u.UserId, &u.Uname)
		users = append(users, u)
	}
	fmt.Println(users)
}

执行结果为:

[{1 Mike} {2 John}]
同时在当前目录生成foo.db

2.Go连接MySQL

2_1.MySQL推荐驱动

https://github.com/Go-SQL-Driver/MySQL

2_2.MySQL连接示例代码

示例代码如下:

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
)

type Users struct {
	UserId int
	Uname  string
}

func main() {
	//db, err := sql.Open("mysql", "user:password@/dbname")
	db, err := sql.Open("mysql", "root:root@/test")
	if err != nil {
		fmt.Println("连接数据库失败")
	}
	defer db.Close()
	var users []Users = make([]Users, 0)
	sqlStr := "select * from users"
	rows, err := db.Query(sqlStr)
	if err != nil {
		fmt.Println(err)
	} else {
		for i := 0; rows.Next(); i++ {
			var u Users
			rows.Scan(&u.UserId, &u.Uname)
			users = append(users, u)
		}
		fmt.Println(users)
	}
}

执行结果为:

[{1 Mike} {2 John}]

3.Go连接Oracle

3_1.Oracle推荐驱动以及准备事项

本人的数据库相关配置是 版本11.2.0.1.0
	Go版本是1.2
	系统是WIN7旗舰版64位
	按照下面的步骤最终连接上了oracle
①首先是先在机子上安装git(这是必须的吧 作为go开发者)
②下载最新版的OCI尽管我用的是11.2的版本,但是试了n次才返现只有最新的12.1.0.1.0 才管用
	下载地址是http://www.oracle.com/technetwork/cn/database/winx64soft-089540.html
	如果这个地址不好使,可以再baidu是搜Instant Client Downloads for Microsoft Windows (x64)
	需要下载instantclient-basic和instantclient-sdk两个zip文件
	下载后将两个包解压,然后将sdk中的文件sdk文件夹放到instantclient_12_1下,形成instantclient_12_1/sdk目录级
	然后将instantclient_12_1文件夹改名为instantclient_11_2并放到了C盘的跟目录下
③下载MinGW最新版(实际上我用的不是最新的  用的是这个版本x86_64-4.9.0-posix-seh-rt_v3-rev2)
④到https://github.com/wendal/go-oci8下载pkg-config.exe和oci8.pc
	注意先不要把这些源码git到计算机上,只是先下载pkg-config.exe和oci8.pc(在windows目录下)
	下载后进行以下操作
	将pkg-config.exe复制到mingw\bin\下 
	将oci8.pc复制到mingw\lib\pkg-config\下(我的pkg-config是新建的因为原来没有)
	注意,oci8.pc 需要根据你下载的 oci进行修改。下面是我根据我下载的oci版本做的修改。
	# Package Information for pkg-config

	prefix=C:/instantclient_11_2
	exec_prefix=C:/instantclient_11_2
	libdir=${exec_prefix}
	includedir=${prefix}/sdk/include/

	Name: OCI
	Description: Oracle database engine
	Version: 11.2
	Libs: -L${libdir} -loci
	Libs.private: 
	Cflags: -I${includedir}
⑤修改系统环境变量,
	添加 
	PATH=原有PATH;C:\instantclient_11_2;D:\MinGW\bin; (读者根据自己的目录变换一下)
	PKG_CONFIG_PATH=D:\MinGW\lib\pkg-config(读者根据自己的目录变换一下)
⑥下载源码.
	把https://github.com/wendal/go-oci8源码git到本地(这是go-oci库 也就是连接oracle的驱动)
	go get github.com/wendal/go-oci8
	然后执行测试一下吧

3_2.Oracle连接示例代码

示例代码如下:

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/wendal/go-oci8"
	"log"
)

type Users struct {
	UserId int
	Uname  string
}

func main() {
	log.Println("Oracle Driver Connecting....")
	//用户名/密码@实例名 如system/123456@orcl、sys/123456@orcl
	db, err := sql.Open("oci8", "BOOKMAN/password@orcl")
	if err != nil {
		log.Fatal(err)
		panic("数据库连接失败")
	} else {
		defer db.Close()
		var users []Users = make([]Users, 0)
		rows, err := db.Query("select * from users")
		if err != nil {
			log.Fatal(err)
		} else {
			for rows.Next() {
				var u Users
				rows.Scan(&u.UserId, &u.Uname)
				users = append(users, u)
			}
			fmt.Println(users)
			defer rows.Close()
		}

	}

}

执行过程比mysql和sqlite比起来非常缓慢,结果如下

2014/07/08 01:14:05 Oracle Driver Connecting....
[{1 Mike} {2 john}]
Go实战--go语言操作sqlite数据库(The way to go) 生命不止,继续 go go go !!!继续与大家分享,go语言的实战,今天介绍的是如何操作sqlite数据库。何为sqlite3? SQLite is a self-contained, high-reliability, embedded, full-featured, public-domain, SQL database engine.最主要的是,sqlite是一款轻型的数据库官网: h 阅读详情

相关推荐

七自由度机械臂逆运动学实战:从几何简化到KDL库高效求解

本文深入探讨了七自由度机械臂逆运动学求解的实战方法。针对冗余自由度带来的挑战,文章对比了两种核心方案:一是利用任务约束进行几何简化,快速求解特定任务;二是基于DH参数法配置KDL库,实现通用高效的数值迭代求解。文中结合宇树H1机器人实例,详细阐述了从模型解析、参数提取到代码实现与验证的全流程,并提供了几何法与KDL库的适用场景对比与避坑指南。

weixin_29044713的博客 592

GoSQLite 数据库

关于 SQLite 数据库Go 语言的 CRUD 操作!

qq_46457076的博客 2435

23、资产分散化与有效前沿:投资组合优化的核心策略

本文深入探讨了现代投资组合理论的核心概念,包括分散投资的重要性、均值-方差优化框架以及有效前沿的构建与应用。通过案例分析和数学模型,阐述了如何通过科学方法降低投资组合风险并实现最优风险收益权衡。文章还介绍了实际应用中的求解方法与决策流程,为投资者提供系统的投资组合优化指导。

cc789的博客 88

go sqlite mysql_Golang连接SQLiteMySQLORacle

说明:go语言连接数据库不像JAVA那么方便,本文分别介绍了连接三种典型数据库的驱动以及连接方式:小型:SQLite;中型:MySQL;大型:Orace.安装问题:1.32 位 windows 的安装1_1.安装 sqlite3。到 http://www.sqlite.org/download.html 的页面中,找到 sqlite-dll-win32-x86-3071700.zip 下载解压,并...

weixin_31437695的博客 818

Go语言操作sqllite

package main import ( "database/sql" "fmt" "video/util" _ "github.com/mattn/go-sqlite3" ) func main() { db, err := sql.Open("sqlite3","D:/workstation/sqlite/foo.db") util.CheckError(err) /...

张音乐的博客 1823

Golang操作sqlite3数据库教程

sqlite是嵌入式关系型数据库引擎,官方描述为自包含的、无服务的、零配置并支持事务的关系型数据库引擎。我们在产品开发过程中经常使用,可以快速进行产品验证和部署,快速实现产品演示。Go有sql包,它提供了sql(或类sql)数据库的通用接口。sql包必须与数据库驱动程序一起使用。

neweastsun的专栏 1万+

编程笔记 Golang基础 047 mysql数据库连接与操作

MySQL凭借其开源、高效、稳定、灵活、安全以及广泛的社区支持等诸多优势,在全球范围内广受欢迎,尤其是在Web应用程序、云计算和大规模数据处理领域得到了广泛应用。

明月看潮生的博客 3662

sqlite3 mysql oracle_Go语言-连接数据库SQLiteMySQLOracle-Mike_zh-【安基网】

本文目录说明: go语言连接数据库不像Java那么方便,本文分别介绍了连接三种典型的数据库的驱动以及连接方法:小型,SQLite;中型,MySQL;大型,Oracle.1.Go连接SQLite1_1.SQLite推荐驱动https://github.com/mattn/go-sqlite31_2.SQLite连接示例代码示例代码如下:package mainimport ("database/sq...

weixin_36370128的博客 171

Go连接Mysql

介绍了 go 原生 连接 mysql 数据库 进行增删改查, 预处理, 事务等

Ewige的博客 4246

Go语言入门心法(十):Go语言操作MYSQL(CRUD)|事务处理

gomysql执行CRUD操作 go语言操作数据库时事务处理 sql: converting argument $1 type: unsupported type []interface {}, a slice of interface

天涯芳草 812

Go语言操作数据库

Go语言操作数据库

weixin_45151033的博客 2670

Go语言快速上手】第二部分:Go语言进阶之数据库操作

Go 语言通过内置的包支持关系型数据库的操作,同时也支持通过第三方库与 NoSQL 数据库进行交互。你可以通过标准的 SQL 操作与关系型数据库(如 MySQL、PostgreSQL)进行交互,也可以使用专门的库来连接 NoSQL 数据库(如 MongoDB、Redis)。本篇博客将介绍如何在 Go 中操作关系型数据库与 NoSQL 数据库

卜及中的博客 1306

第 30 章 - Go语言 数据库操作

下面我将通过具体的案例来讲解Go语言在处理SQL数据库、NoSQL数据库以及使用ORM框架方面的一些操作。我们将分别用到包、mgo包(用于MongoDB)以及gorm这个流行的Go语言ORM框架。

hummhumm的专栏 1752

2024年Go最全SQLite 数据库入门教程(GO)_sqlite学习,2024年最新Golang常见面试题知乎

新手注意,这里有一个坑,是在cmd(在命令行)中输入,而不是打开sqlite3后在shell中输入。输入 .databases 就会显示刚创建的数据库信息(能看到创建的数据库文件及地址路径信息);输入.quit 就会退出sqlite3的shell程序环境。进入SQLite后,输入 .open 数据库名.db 方式,也可以创建数据库,如果数据库文件已经建立,则打开。这种方式不支持自定义路径。

2401_84925367的博客 2346

golang学习之go连接mysql

golang连接mysql 增删改查操作

weixin_56349119的博客 5733

Golang连接SQLiteMySQLOracle数据库

本文目录 1.Go连接SQLite 1_1.SQLite推荐驱动 1_2.SQLite连接示例代码 2.Go连接MySQL 2_1.MySQL推荐驱动 2_2.MySQL连接示例代码 3.Go连接Oracle 3_1.Oracle推荐驱动以及准备事项 3_2.Oracle连接示例代码 说明:go语言连接数据库不像Java那么方便,本文分别介绍了连接三种典型的数据库的驱动以及连接

子曰:好娃得是不抄作业? 8307

go中使用sqlite

安装mingw64 sqlite作为一个快速开发的数据库,理应被go支持,但是要在go里面使用sqlite,实际上是要下载sqlite的源代码编译的,当然,使用的时候不用手动编译,在linux中,gcc如果已经安装了,是不用担心的,但是在windows中,为了支持编译,必须使用mingw64 mingw64下载 注意在mingw64安装过程中选择x64。 使用sqlite ......

qianbo042311的博客 4078

golang使用sqlite

安装问题 在import sqlite的时候,golang build 出现以下错误, exec: "gcc": executable file not found in %PATH% 原因是sqlitle3是个cgo库,需要gcd编译c代码 然后下载安装tdm-gcc即可(windosw版本)下载地址:http://tdm-gcc.tdragon.net/download 在golang中使用s...

weixin_30685029的博客 523

Go语言常见数据库操作

客户端对SQL语句进行占位符替换得到完整的SQL语句。客户端发送完整SQL语句到MySQL服务端MySQL服务端执行完整的SQL语句并将结果返回给客户端。把SQL语句分成两部分,命令部分与数据部分。先把命令部分发送给MySQL服务端,MySQL服务端进行SQL预处理。然后把数据部分发送给MySQL服务端,MySQL服务端对SQL语句进行占位符替换。MySQL服务端执行完整的SQL语句并将结果返回给客户端。

qq_63730529的博客 1369

SQLite 数据库入门教程(GO)_sqlite学习

进入SQLite后,输入 .open 数据库名.db 方式,也可以创建数据库,如果数据库文件已经建立,则打开。因为 go里面使用sqlite,实际上是要下载sqlite的源代码编译的,当然,使用的时候不用手动编译,在linux中,gcc 如果已经安装了,是不用担心的,但是在windows中,为了支持编译,必须使用 mingw64。解压下载好的文件放置任一目录,随后将 bin 目录添加进 path 环境变量中,打开 cmd ,输入 gcc -v ,如正确显示版本号则安装成功,然后重启 goland 即可。

2401_86436837的博客 1006
上一篇: golang channel的使用技巧
下一篇: Golang操作数据库
QQ7650371
博客等级 码龄11年 160粉丝 192原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值