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

Go語言使用SQLite實現(xiàn)本地存儲的示例詳解

 更新時間:2025年08月22日 09:50:53   作者:程序員愛釣魚  
在開發(fā)工具類軟件、桌面應(yīng)用或者移動端時,我們經(jīng)常需要一個輕量級數(shù)據(jù)庫來做本地存儲,本文將帶你一步步用 Go 搭建一個 SQLite 本地存儲的示例,希望對大家有所幫助

在開發(fā)工具類軟件、桌面應(yīng)用或者移動端時,我們經(jīng)常需要一個輕量級數(shù)據(jù)庫來做 本地存儲。相比 MySQL、Postgres 等服務(wù)型數(shù)據(jù)庫,SQLite 體積小、零配置、單文件存儲,非常適合這種場景。

Go 語言通過 GORM + SQLite 驅(qū)動 就能輕松實現(xiàn)。本文將帶你一步步用 Go 搭建一個 SQLite 本地存儲的示例。

一、環(huán)境準(zhǔn)備

安裝依賴庫:

go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite

二、定義模型

我們以一個 Note 記事本模型為例:

package main

import (
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
    "log"
)

// Note 記事本模型
type Note struct {
    ID      uint   `gorm:"primaryKey"`
    Title   string `gorm:"size:100"`
    Content string
}

var db *gorm.DB

func initDB() {
    var err error
    // 創(chuàng)建/連接 SQLite 文件數(shù)據(jù)庫
    db, err = gorm.Open(sqlite.Open("notes.db"), &gorm.Config{})
    if err != nil {
        log.Fatal("數(shù)據(jù)庫連接失敗:", err)
    }

    // 自動遷移
    _ = db.AutoMigrate(&Note{})
}

運行后,會在當(dāng)前目錄下生成一個 notes.db 文件,里面存儲了表結(jié)構(gòu)和數(shù)據(jù)。

三、實現(xiàn)基本的本地存儲操作

1. 新增數(shù)據(jù)

func createNote(title, content string) {
    note := Note{Title: title, Content: content}
    db.Create(&note)
    log.Println("新增筆記成功:", note)
}

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

func getNotes() {
    var notes []Note
    db.Find(&notes)
    log.Println("所有筆記:", notes)
}

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

func updateNote(id uint, newContent string) {
    db.Model(&Note{}).Where("id = ?", id).Update("content", newContent)
    log.Println("更新筆記成功, ID:", id)
}

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

func deleteNote(id uint) {
    db.Delete(&Note{}, id)
    log.Println("刪除筆記成功, ID:", id)
}

四、測試本地存儲

func main() {
    initDB()

    // 新增兩條筆記
    createNote("Go 學(xué)習(xí)計劃", "每天刷 1 個實戰(zhàn)案例")
    createNote("購物清單", "牛奶、面包、雞蛋")

    // 查詢
    getNotes()

    // 更新
    updateNote(1, "每天刷 2 個實戰(zhàn)案例")
    getNotes()

    // 刪除
    deleteNote(2)
    getNotes()
}

五、運行效果

首次運行,會生成 notes.db 文件。SQLite 可以用 命令行工具或第三方軟件(如 DB Browser for SQLite)  打開查看。

程序日志:

新增筆記成功: {1 Go 學(xué)習(xí)計劃 每天刷 1 個實戰(zhàn)案例}
新增筆記成功: {2 購物清單 牛奶、面包、雞蛋}
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 1 個實戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
更新筆記成功, ID: 1
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 2 個實戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
刪除筆記成功, ID: 2
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 2 個實戰(zhàn)案例}]

六、總結(jié)

通過本案例,我們實現(xiàn)了:

  • 使用 GORM + SQLite 搭建 本地存儲數(shù)據(jù)庫
  • 自動遷移模型(建表)
  • 實現(xiàn)了 CRUD 操作(增刪改查)
  • 數(shù)據(jù)存儲在單個 notes.db 文件中,方便移植與備份

SQLite 非常適合:

  • 桌面應(yīng)用:比如記事本、數(shù)據(jù)分析工具
  • 移動應(yīng)用:本地緩存、用戶數(shù)據(jù)存儲
  • 輕量級服務(wù):不需要 MySQL/Postgres 的完整環(huán)境

到此這篇關(guān)于Go語言使用SQLite實現(xiàn)本地存儲的示例詳解的文章就介紹到這了,更多相關(guān)Go SQLite本地存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Golang開發(fā)一個簡易版shell

    使用Golang開發(fā)一個簡易版shell

    這篇文章主要為大家詳細(xì)介紹了如何使用Golang開發(fā)一個簡易版shell,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 使用go連接clickhouse方式

    使用go連接clickhouse方式

    這篇文章主要介紹了使用go連接clickhouse方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Go語言實戰(zhàn)之實現(xiàn)均衡器功能

    Go語言實戰(zhàn)之實現(xiàn)均衡器功能

    這篇文章主要為大家詳細(xì)介紹了如何利用Golang?實現(xiàn)一個簡單的流浪均衡器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • Golang實現(xiàn)對map的并發(fā)讀寫的方法示例

    Golang實現(xiàn)對map的并發(fā)讀寫的方法示例

    這篇文章主要介紹了Golang實現(xiàn)對map的并發(fā)讀寫的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • k8s容器互聯(lián)-flannel?host-gw原理篇

    k8s容器互聯(lián)-flannel?host-gw原理篇

    這篇文章主要為大家介紹了k8s容器互聯(lián)-flannel?host-gw原理篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • go實現(xiàn)fping功能

    go實現(xiàn)fping功能

    這篇文章主要介紹了go實現(xiàn)fping功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • golang快速實現(xiàn)網(wǎng)頁截圖的方法

    golang快速實現(xiàn)網(wǎng)頁截圖的方法

    這篇文章主要介紹了golang快速實現(xiàn)網(wǎng)頁截圖的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • golang中實現(xiàn)graphql請求的方法

    golang中實現(xiàn)graphql請求的方法

    這篇文章主要介紹了如何在golang中實現(xiàn)graphql請求,在本文中,我們介紹了如何使用gqlgen來構(gòu)建GraphQL服務(wù),需要的朋友可以參考下
    2023-04-04
  • grpc-go如何通過context傳遞額外數(shù)據(jù)

    grpc-go如何通過context傳遞額外數(shù)據(jù)

    metadata是grpc內(nèi)置的,用RPC服務(wù)傳遞http頭數(shù)據(jù),分in和out兩種,對應(yīng)的key都為一個空struct,這篇文章主要介紹了grpc-go通過context傳遞額外數(shù)據(jù),需要的朋友可以參考下
    2024-02-02
  • 深入理解Golang的單元測試和性能測試

    深入理解Golang的單元測試和性能測試

    Go語言提供了強大的測試工具,下面這篇文章主要給大家介紹了關(guān)于Golang單元測試和性能測試的相關(guān)資料,文中通過示例代碼給大家詳細(xì)介紹了單元測試和性能測試的相關(guān)內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08

最新評論