欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go連接并操作SQLite數(shù)據(jù)庫(kù)基本步驟

 更新時(shí)間:2024年01月31日 11:33:18   作者:云原生Go?源自開(kāi)發(fā)者  
在這篇文章中,我們將詳細(xì)描述如何在?Go?語(yǔ)言中使用?SQLite?數(shù)據(jù)庫(kù),我們將會(huì)從如何在?Go?中安裝和使用?SQLite?驅(qū)動(dòng)包開(kāi)始講起,然后逐步介紹如何創(chuàng)建數(shù)據(jù)庫(kù)連接,執(zhí)行?SQL?查詢,處理返回的數(shù)據(jù)以及關(guān)閉數(shù)據(jù)庫(kù)連接

安裝 SQLite 驅(qū)動(dòng)

首先,我們需要在 Go 環(huán)境里安裝 SQLite 的驅(qū)動(dòng)程序,可以使用以下命令進(jìn)行安裝:

go get github.com/mattn/go-sqlite3

創(chuàng)建數(shù)據(jù)庫(kù)連接

接下來(lái),使用 sql.Open() 函數(shù),我們可以連接到數(shù)據(jù)庫(kù)。期望的兩個(gè)參數(shù)是驅(qū)動(dòng)名稱和數(shù)據(jù)源名稱。 比如:

package main

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

func main() {
    db, err := sql.Open("sqlite3", "./test.db")
    if err != nil {
        fmt.Println(err)
    }
    defer db.Close()
}

執(zhí)行 SQL 查詢

建立連接之后,我們可以使用 db.Exec() 來(lái)執(zhí)行 SQL 查詢。例如,

stmt, err := db.Prepare("CREATE TABLE IF NOT EXISTS userinfo(username TEXT, departname TEXT, created DATE)")
if err != nil {
    log.Fatalln(err)
}
_, err = stmt.Exec()
if err != nil {
    log.Fatalln(err)
}

插入數(shù)據(jù)

我們可以通過(guò)以下方式向表中插入數(shù)據(jù):

stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)")
if err != nil {
    log.Fatalln(err)
}

res, err := stmt.Exec("astaxie", "tech", "2019-12-09")
if err != nil {
    log.Fatalln(err)
}

id, err := res.LastInsertId()

if err != nil {
    log.Fatalln(err)
}

fmt.Println(id)

查詢數(shù)據(jù)

類似地,我們可以使用 db.Query() 來(lái)執(zhí)行 SQL 查詢并獲取結(jié)果。下面是一個(gè)例子:

rows, err := db.Query("SELECT * FROM userinfo")
columns, err := rows.Columns()
values := make([]sql.RawBytes, len(columns))
for i, _ := range values {
    values[i] = new(sql.RawBytes)
}
var value string
for rows.Next() {
    err = rows.Scan(values...)
    if err != nil {
        log.Fatalln(err)
    }
    for _, val := range values {
        if val == nil {
            value = "NULL"
        } else {
            value = string(*val)
        }
    }
    fmt.Println(value)
}
if err = rows.Err(); err != nil {
    log.Fatalln(err)
}

更新數(shù)據(jù)

更新數(shù)據(jù)的操作和插入數(shù)據(jù)類似,都是利用 db.Exec() 來(lái)執(zhí)行 SQL 語(yǔ)句:

stmt, err := db.Prepare("update userinfo set username=? where uid=?")
if err != nil {

updateRes, err := stmt.Exec("astaxieupdate", lastInsertID)
if err != nil {
    log.Fatalln(err)
}

affect, err := updateRes.RowsAffected()

if err != nil {
    log.Fatalln(err)
}
fmt.Println(affect)

刪除數(shù)據(jù)

最后,刪除數(shù)據(jù)操作與插入和更新數(shù)據(jù)操作類似,同樣利用 db.Exec() 來(lái)執(zhí)行 SQL 語(yǔ)句:

stmt, err := db.Prepare("DELETE FROM userinfo WHERE uid=?")
if err != nil {

delRes, err := stmt.Exec(lastInsertID)
if err != nil {
    log.Fatalln(err)
}

affect, err := delRes.RowsAffected()
if err != nil {
    log.Fatalln(err)
}

fmt.Println(affect)

以上就是如何在 Go 語(yǔ)言中操作 SQLite 數(shù)據(jù)庫(kù)的基本步驟,更多關(guān)于Go連接操作SQLite數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • go開(kāi)源Hugo站點(diǎn)渲染之模板詞法解析

    go開(kāi)源Hugo站點(diǎn)渲染之模板詞法解析

    這篇文章主要為大家介紹了go開(kāi)源Hugo站點(diǎn)渲染之模板詞法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • golang如何判斷文件是否存在

    golang如何判斷文件是否存在

    判斷一個(gè)文件是否存在是一個(gè)相當(dāng)常見(jiàn)的需求,在golang中也有多種方案實(shí)現(xiàn)這一功能,下面就跟隨小編一起學(xué)習(xí)一下具體的實(shí)現(xiàn)方法吧
    2024-11-11
  • Golang?Mutex錯(cuò)過(guò)會(huì)后悔的重要知識(shí)點(diǎn)分享

    Golang?Mutex錯(cuò)過(guò)會(huì)后悔的重要知識(shí)點(diǎn)分享

    互斥鎖?Mutex?是并發(fā)控制的一個(gè)基本手段,是為了避免并發(fā)競(jìng)爭(zhēng)建立的并發(fā)控制機(jī)制,本文主要為大家整理了一些Mutex的相關(guān)知識(shí)點(diǎn),希望對(duì)大家有所幫助
    2023-07-07
  • go語(yǔ)法入門(mén)匿名函數(shù)定義及使用示例詳解

    go語(yǔ)法入門(mén)匿名函數(shù)定義及使用示例詳解

    這篇文章主要為大家介紹了go語(yǔ)法入門(mén)匿名函數(shù)定義及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Go文件操作(新建打開(kāi)寫(xiě)入讀取刪除關(guān)閉)學(xué)習(xí)筆記

    Go文件操作(新建打開(kāi)寫(xiě)入讀取刪除關(guān)閉)學(xué)習(xí)筆記

    這篇文章主要為大家介紹了Go文件操作(新建打開(kāi)寫(xiě)入讀取刪除關(guān)閉)學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Golang 內(nèi)存管理簡(jiǎn)單技巧詳解

    Golang 內(nèi)存管理簡(jiǎn)單技巧詳解

    這篇文章主要為大家介紹了Golang 內(nèi)存管理簡(jiǎn)單技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • golang中切片copy復(fù)制和等號(hào)復(fù)制的區(qū)別介紹

    golang中切片copy復(fù)制和等號(hào)復(fù)制的區(qū)別介紹

    這篇文章主要介紹了golang中切片copy復(fù)制和等號(hào)復(fù)制的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • go xorm框架的使用

    go xorm框架的使用

    xorm框架和Spring Data Jpa有點(diǎn)相似,可以對(duì)比學(xué)習(xí),對(duì)于這個(gè)框架感覺(jué)還不錯(cuò),閑暇時(shí)間學(xué)習(xí)一下
    2021-05-05
  • Golang?json?庫(kù)中的RawMessage功能原理

    Golang?json?庫(kù)中的RawMessage功能原理

    今天我們來(lái)學(xué)習(xí)一個(gè) Golang 官方 json 庫(kù)提供了一個(gè)經(jīng)典能力RawMessage,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Go接口構(gòu)建可擴(kuò)展Go應(yīng)用示例詳解

    Go接口構(gòu)建可擴(kuò)展Go應(yīng)用示例詳解

    本文深入探討了Go語(yǔ)言中接口的概念和實(shí)際應(yīng)用場(chǎng)景。從基礎(chǔ)知識(shí)如接口的定義和實(shí)現(xiàn),到更復(fù)雜的實(shí)戰(zhàn)應(yīng)用如解耦與抽象、多態(tài)、錯(cuò)誤處理、插件架構(gòu)以及資源管理,文章通過(guò)豐富的代碼示例和詳細(xì)的解釋,展示了Go接口在軟件開(kāi)發(fā)中的強(qiáng)大功能和靈活性
    2023-10-10

最新評(píng)論