Go 資料庫原生操作包database sql

2021-10-07 05:56:51 字數 2647 閱讀 7810

匿名匯入資料庫驅動包,註冊驅動

import _ "github.com/go-sql-driver/mysql" //執行init(),註冊mysql驅動

open(drivername,dsn)方法校驗倆引數是否正確,返回資料庫操作控制代碼*db

package main

import (

"database/sql"

"fmt"

_ "github.com/go-sql-driver/mysql" //執行init(),註冊mysql驅動

)func main()

fmt.println("parameter verification succeeded!")

}

注:

1.dsn為操作的資料庫資源名稱,格式為 [username[:password]@][protocol[(address)]]/dbname[?param1=value1&…¶mn=valuen]

詳情可到 檢視.

2.sql.open()方法只是做引數的校驗(即驅動名是否與註冊的驅動相同),並沒有開啟乙個資料庫鏈結。我們可到原始碼的注釋裡可以看到:

// open may just validate its arguments without creating a connection

// to the database. to verify that the data source name is valid, call

// ping.

ping()方法測試資料庫是否鏈結成功(校驗dsn引數是否正確有效)

package main

import (

"database/sql"

"fmt"

_ "github.com/go-sql-driver/mysql" //執行init(),註冊mysql驅動

)func main()

fmt.println("drivername verification succeeded!")

//測試資料庫鏈結是否成功,ping方法會去鏈一次資料庫以校驗dsn是否正確

if pinerr := db.ping(); pinerr != nil else

}

open,ping方法呼叫過程可簡記為【兩參校驗法】,即drivername,dsn引數校驗。只有在這兩步都成功後後續資料庫的curd才能相繼展開。

1. 非查詢類的api操作

非查詢類顧名思義即為增刪改相關的資料庫操作,使用db.exec(sql,…inte***ce{})方法來實現,sql語句即為增刪改的語句,引數二為需要傳入sql語句裡的值。方法返回result乙個結構體物件其包含了乙個獲取受影響行數和獲取該條記錄id的方法。

//普通版本

func (user *user) adduser1()(result sql.result,err error)

//預編譯sql版:一次編譯,多次執行。eg:迴圈執行插入

func (user *user) adduser2()(result sql.result,err error)

//執行,傳引數填充佔位符?

result,err = stmt.exec(user.username,user.password,user.email)

//關閉資源

defer stmt.close()

return

}

2. 查詢類的api操作
//查詢一條使用者

func (user *user) finduserbyid()user

return user

}

多條查詢

//查詢所有使用者

func (user *user) findusers()*user

//宣告切片

var users *user

for rows.next()

//新增到切片

} defer rows.close()

return users

}

3. 資料庫null值的處理

1.因為資料庫欄位的值可能存在設定為可null的情況,而go語言是強型別的語言在其基礎資料型別中沒有匹配null的資料型別。此時我們可以用database/sql包下提供的nullstring,nullfloat64,nullint32,nullbool,nulltime結構體型別來代替相關變數的資料型別,來解決此問題。

2.其中各結構體裡有兩個成員變數,乙個是各自型別的變數值,乙個bool型別的valid(當其值不為null時為true)。

4. 預編譯,預處理sql
一次編譯,多次執行。eg:迴圈執行插入

注:curd方法也由*db呼叫變成為 *tx物件呼叫

java原生資料庫操作封裝

用來完成運算元據庫集合操作的類 封裝了連線資料庫 執行語句 查詢結果 關閉資料庫完整的操作方法 author 15196 public class completeope 對外開放的方法,採用策略模式,先初始化conn ps rs然後通過doresult執行查詢結果操作,最後關閉資料庫 通過sql ...

go操作mysql資料庫

var db sql.db 資料庫 控制代碼 var errorg error 全域性變數 func init 功能 查詢 引數 tablename 表名 cond 選擇條件 items 選擇的欄位名 返回值 未定 ex select id,name from flask sx test.stu t...

Go操作MySql資料庫

使用go操作mysql等資料庫,一般有兩種方式 一是使用database sql介面,直接在 裡硬編碼sql語句 二是使用gorm,即物件關係對映的方式在 裡抽象的運算元據庫。一般推薦使用第二種方式。go沒有內建的驅動支援任何資料庫,但是go定義了database sql介面,使用者可以基於驅動介面...