1. 程式人生 > >Golang連線SQLite、MySQL、Oracle資料庫

Golang連線SQLite、MySQL、Oracle資料庫

本文目錄
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那麼方便,本文分別介紹了連線三種典型的資料庫的驅動以及連線方法:小型,SQLite;中型,MySQL;大型,Oracle.
-1.Go連線SQLite
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.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:[email protected]/dbname”)
db, err := sql.Open(“mysql”, “root:[email protected]/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.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/[email protected]、sys/[email protected]
db, err := sql.Open(“oci8”, “BOOKMAN/[email protected]”)
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}]

相關推薦

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推薦驅動以及

【Go語言】連線資料庫SQLiteMySQLOracle

本文目錄 說明: go語言連線資料庫不像Java那麼方便,本文分別介紹了連線三種典型的資料庫的驅動以及連線方法:小型,SQLite;中型,MySQL;大型,Oracle. 1.Go連線SQLit

jdbc連線oraclemysql等主流資料庫的驅動類和url

jdbc連線oracle、mysql等主流資料庫的驅動類和url ----------------------------------------------------------- oracle  driverClass:oracle.jdbc.driver.OracleDriver

SqlServerMySqlOracle資料庫監控系統

MoonMig Monitor 是一套由.Net 開發的資料庫監控程式,包含四個大元件: 1. 定時任務排程框架 該定時任務基於Quartz.Net進行自主開發的擴充套件框架,支援資料庫中配置排程方法,以及資料庫中更改排程計劃,採取的是Job==》JobSteps==》JobStepEvents方式進行架構的

Centos 7.2 安裝ApachePHPMysql連線Mysql資料庫的包安裝VSFTP並配置

一、安裝Apache、PHP、Mysql、連線Mysql資料庫的包: yum install httpd yum -y install php yum -y install php-fpm yum -y install php-mysql yum -y inst

SQLServerMysqlOracle資料庫分割槽方案參考

第一部分:SQLServer分割槽表相關 SQLServer表分割槽比較特殊,表分割槽需要將索引列關聯到分割槽方案,分割槽方案又需要依賴分割槽函式來劃分資料到檔案組,而一個檔案組又可以包含多個檔案。所以一個合理的SQLServer分割槽,需要自行創檔案組、檔案

OracleMysqlSqlserver資料庫中查詢表中所有的欄位

有時候,我們需要獲取資料庫中一個表裡所有的欄位。對此,我進行了一些總結。 1.Mysql資料庫 select GROUP_CONCAT(COLUMN_NAME) from information_schema.COLUMNS where table_name = '表名' and table

HBaseMongoDBMySQLOracleRedis--nosql資料庫與關係資料庫對比

HBase vs. MongoDB vs. MySQL vs. Oracle vs. Redis,三大主流開源 NoSQL 資料庫的 PK 兩大主流傳統 SQL 資料庫 類別 HBase MongoDB MySQL Oracle Redis 描述 基於 Ap

OracleMYSQLdb2資料庫之間的不同以及使用

Mysql這種方式很初級最容易被人想到,Database與User分開是跟其他兩個的區別,用授權來關聯使用者和資料庫。jdbc的連線地址裡面,三者分別指定了Database、User、User(&Schema),Db2如果不單獨建立Schema則形式是跟Oracle一樣的。Db2的User只能是作業系

[筆記]OracleMySQL和DB2資料庫分頁查詢的實現

1.Oracle分頁查詢 SELECT * FROM (        SELECT tt.*,ROWNUM AS rowno                 FROM (                     SELECT t.info_id,t.title,t.sou

Vertica的這些事—— SQL ServerOracleMySQL和Vertica資料庫常用函式對比

SQL Server、Oracle、MySQL和Vertica資料庫常用函式對比 Vertica資料庫是HP公司新收購的用於BI方面的資料庫。 絕對值 S:select abs(-1) value O:select abs(-1) value f

Embedded資料庫比較:AccessSQLiteHSQLDBSybaseMySQLDB4O

引自:http://www.cnblogs.com/kenkofox/archive/2011/03/18/1988422.html 一、Access     資料型別有些另類,而且密碼太容易被攻破,效能不高,只能用在Windows程式上。     一般說來,單個表不超過1

SQLiteMySqlOracle的使用區別(C#)

1.引數 SQLiteParameter p = new SQLiteParameter(":project_id", DbType.String); p.Value = project_id; MySqlParameter p = new MySqlParameter

各種資料庫(oraclemysqlsqlserver等)在Spring中資料來源的配置和JDBC驅動包

在開發基於資料庫的應用系統時,需要在專案中進行資料來源的配置來為資料 庫的操作取得資料庫連線。配置不同資料庫的資料來源的方法大體上都是相同的,不同的只是不同資料庫的JDBC驅動類和連線URL以及相應的資料庫使用者名稱和密 碼不同。下面列出8中常用的資料庫的資料庫資料來源配置

獲取資料庫中包含某個關鍵詞的所有表名(SqlserverMySQLOracle

1.sqlserver select name as table_name from sys.objects where type='U' and name like '%關鍵詞%' 2.mysql S

SqlserverMysqlOracle各自的默認端口號

edr drive mic odin word host base nco mysql mysql 默認端口號為:3306URL:jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=

SQLiteMySQLSQLServer等異構數據庫之間的數據同步

高效 配置 數據同步 自動 技術分享 請求 roi bsp 服務器 SQLite DBSync是開源嵌入式數據庫SQLite的數據同步引擎,實現了SQLite與SQLite數據庫之間以及SQLite與異構數據庫(Oracle、MySQL、SQLServer)之間的增量的、雙

OracleMySqlSqlServer三者查詢語句對比

Oracle    jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:test 分頁      select * from      (select t.*,rownum as

OracleSQL ServerMySQLDB2PostgreSQLSybase預設資訊

Oracle預設埠號為:1521 URL:jdbc:oracle:thin:@localhost :1521:orcl Driver:oracle.jdbc.driver.OracleDriver   SQL Server預設埠號為:1433 URL:jdbc:sqls

sqlservermysqloracle各自的預設埠號

sqlserver預設埠號為:1433 URL:"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname" DRIVERNAME:"com.microsoft.jdbc.sqlserver.SQLServerDriver";