iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0

昨天我們學會了如何解析 JSON,把 API 回傳的資料轉換成 StockProfile
今天要解決另一個問題:資料要怎麼保存起來?
https://ithelp.ithome.com.tw/upload/images/20250925/20121224GZmtfIjsVj.jpg

為什麼要用本地資料庫

在選股工具裡,如果每次開啟程式都重新呼叫 API,會有幾個缺點:

  • 速度慢:每次都要等 API 回應。
  • 受限網路:沒有網路就沒辦法使用。
  • API 次數限制:過度呼叫可能被封鎖。

解決方式是:把資料存放在本地資料庫,之後直接讀取本地資料,不必每次都重新下載。


LiteDB 的基本用法

LiteDB 是一個 輕量級的 .NET NoSQL 本地資料庫

  • 檔案型,所有資料存在一個 .db 檔案裡
  • API 類似 MongoDB,學習曲線低
  • 適合桌面應用(像 WPF)

安裝 NuGet 套件

在 CLI 執行:

dotnet add package LiteDB

或在 Visual Studio → Manage NuGet Packages → 搜尋 LiteDB → 安裝


範例:新增與查詢股票資料

假設我們的資料模型是 StockProfile

public class StockProfile
{
    public string Code { get; set; }
    public string Name { get; set; }
    public string Industry { get; set; }
    public DateTime LastUpdatedUtc { get; set; }
}

新增股票資料

using System;
using System.Collections.Generic;
using LiteDB;

class Program
{
    static void Main(string[] args)
    {
        using (var db = new LiteDatabase(@"StockData.db"))
        {
            var col = db.GetCollection<StockProfile>("stocks");

            var stock = new StockProfile
            {
                Code = "2330",
                Name = "台積電",
                Industry = "半導體",
                LastUpdatedUtc = DateTime.UtcNow
            };

            col.Insert(stock);
            Console.WriteLine("已新增股票:2330 台積電");
        }
    }
}

這段程式會在同目錄建立一個 StockData.db 檔案,並把 StockProfile 存進 stocks 集合。


查詢股票資料

using (var db = new LiteDatabase(@"StockData.db"))
{
    var col = db.GetCollection<StockProfile>("stocks");

    // 找出所有半導體產業的股票
    var results = col.Find(x => x.Industry == "半導體");

    foreach (var stock in results)
    {
        Console.WriteLine($"{stock.Code} - {stock.Name} ({stock.Industry})");
    }
}

小結

今天我們學會了:

  • 為什麼要用本地資料庫(快、離線可用、省 API 次數)
  • LiteDB 的特性與安裝方式
  • 如何用 LiteDB 新增與查詢股票資料


上一篇
Day 13 - JSON 處理與資料模型綁定
系列文
30天快速上手製作WPF選股工具 — 從C#基礎到LiteDB與Web API整合14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言