iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0

目的

透過dapper對db做查詢,為了降低門檻採用SQLite當範例資料庫。

同步更新於個人部落格
Dapper範例

1.建立新專案

選擇ASP.NET Core Web API專案範本,並執行下一步
步驟1

2.設定新的專案

命名你的專案名稱,並選擇專案要存放的位置。
步驟2

3.其他資訊

直接進行下一步
步驟3

4.NuGet加入套件

  • Dapper
  • Microsoft.Data.Sqlite(微軟官方還是SQLite官方?黑暗執行緒前輩有做說明,我的選擇比較單純有微軟用微軟)
    步驟4

5.編輯WeatherForecastController檔案

  • 將預設的API註解
    步驟5-1
  • 寫新的對外API
    /// <summary>
    /// 檢查有沒有sqlite檔案,沒有就新增,並增加一筆資料
    /// </summary>
    /// <returns></returns>
    [HttpGet("InsertAsync")]
    public async Task<IActionResult> InsertAsync() {
      //連接sqlite資料庫
      using var connection = new SqliteConnection("Data Source=Student.sqlite");
      var SQL = new StringBuilder();
      //當找不到sqlite檔案時,建立新表,新表創建後就會產生sqlite檔案了
      if (System.IO.File.Exists(@".\Student.sqlite")) {
        //組語法,新建名為Student的表
        SQL.Append("CREATE TABLE Student( \n");
        //Id欄位設定數字型別為PKey,並且自動遞增
        SQL.Append("Id INTEGER PRIMARY KEY AUTOINCREMENT, \n");
        //Name欄位設定為VARCHAR(32)不允許是null
        SQL.Append("Name VARCHAR(32) NOT NULL, \n");
        //Age欄位設定為int
        SQL.Append("Age INTEGER) \n");
        //執行sql語法
        await connection.ExecuteAsync(SQL.ToString());
        //清除字串內的值
        SQL.Clear();
      }
      //組語法
      SQL.Append("INSERT INTO Student (Name, Age) VALUES (@Name, @Age);");
      //建立SQL參數化要使用的變數
      DynamicParameters parameters = new();
      //參數1
      parameters.Add("Name", "BillHuang");
      //參數2
      parameters.Add("Age", 20);
      //執行語法,insert一筆資料到Student
      var Result = await conn.ExecuteAsync(SQL.ToString(), parameters);
      //回傳執行成功的數量
      return Ok(Result);
    }
    /// <summary>
    /// 取得Student所有資料
    /// </summary>
    /// <returns></returns>
    [HttpGet("SelectAsync")]
    public async Task<IActionResult> SelectAsync() {
      //連接sqlite資料庫
      using var conn = new SqliteConnection("Data Source=Student.sqlite");
      var SQL = new StringBuilder();
      //組語法
      SQL.Append("select * from Student");
      //執行,並且將執行結果存為強型別
      var Result = await conn.QueryAsync<Student>(SQL.ToString());
      //回傳結果
      return Ok(Result);
    }
    public class Student {
      public int Id { get; set; }
      public string Name { get; set; } = "BillHuang";
      public int Age { get; set; }
    }

範例5-1
範例5-2

6.執行結果

F5執行後,依照下列步驟操作,並確認結果

  • Insert
    範例6-1
    範例6-2
    範例6-3
  • Select
    範例6-4
    範例6-5
    範例6-6

參考

微軟官方還是SQLite官方

範例檔

GitHub


上一篇
[.net 6] EPPlus圖表範例
下一篇
[.net 6] Dapper語法說明
系列文
.net6套件入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言