目的
透過dapper對db做查詢,為了降低門檻採用SQLite當範例資料庫。
建立新專案
選擇ASP.NET Core Web API專案範本,並執行下一步
設定新的專案
命名你的專案名稱,並選擇專案要存放的位置。
其他資訊
直接進行下一步
NuGet加入套件
- Dapper
- Microsoft.Data.Sqlite(微軟官方還是SQLite官方?黑暗執行緒前輩有做說明,我的選擇比較單純有微軟用微軟)
編輯WeatherForecastController檔案
- 將預設的API註解
- 寫新的對外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; }
}
執行結果
F5執行後,依照下列步驟操作,並確認結果
- Insert
- Select