**
安裝數據庫包
**
在使用 SQLite 數據庫時,你需要安裝適當的 NuGet 包來提供與 SQLite 的集成。
1.打開 Visual Studio 中的你的項目
2.在頂部菜單欄中選擇 “項目” -> “管理 NuGet 包”
3.在 NuGet 管理器中搜索 “System.Data.SQLite”
4.找到適合你項目的 SQLite 包,并點擊安裝
數據庫類方法
//頭文件
using Microsoft.Data.Sqlite;
using System.Data.SQLite;public static class MySqLite//數據庫類{static string DbPath = @"D:\C#_program\北理測試1\北理測試1\北理測試1\北理測試\PowerField\bin\data";public static void ExecuteNonQuery(string sql, string dbName = "PowerField.db"){using (var connection = CreateDatabaseConnection(dbName)){connection.Open();using (var transaction = connection.BeginTransaction()){try{using (var command = connection.CreateCommand()){command.CommandText = sql;command.ExecuteNonQuery();}transaction.Commit();}catch (Exception ex){Console.WriteLine("Error executing SQL: " + ex.Message);transaction.Rollback();}}}}public static void ExecuteQuery(string sql, string dbName = "PowerField.db"){Console.WriteLine("1111111111");using (var connection = CreateDatabaseConnection(dbName)){connection.Open();using (var transaction = connection.BeginTransaction()){try{using (var command = connection.CreateCommand()){command.CommandText = sql;using (var reader = command.ExecuteReader()){//數據操作}}transaction.Commit();}catch (Exception ex){Console.WriteLine("Error executing SQL: " + ex.Message);transaction.Rollback();}}}}public static SQLiteConnection CreateDatabaseConnection(string dbName){if (!string.IsNullOrEmpty(DbPath) && !Directory.Exists(DbPath))Directory.CreateDirectory(DbPath);var dbFilePath = System.IO.Path.Combine(DbPath, dbName);return new SQLiteConnection("DataSource = " + dbFilePath);}//改public static void UpdateData(string name, string can1, string can2, string can3, string can4, string can5, string dbName = "PowerField.db")//改{string sql = "UPDATE weili_canshu SET can1 = @can1,can2 = @can2,can3 = @can3,can4 = @can4,can5 = @can5 WHERE name = @name";// 創建數據庫連接using (var connection = CreateDatabaseConnection(dbName)){connection.Open(); // 打開數據庫連接// 開始事務using (var transaction = connection.BeginTransaction()){try{// 創建命令對象using (var command = connection.CreateCommand()){command.CommandText = sql;// 添加參數command.Parameters.AddWithValue("@name", name);command.Parameters.AddWithValue("@can1", can1);command.Parameters.AddWithValue("@can2", can2);command.Parameters.AddWithValue("@can3", can3);command.Parameters.AddWithValue("@can4", can4);command.Parameters.AddWithValue("@can5", can5);Console.WriteLine("SQL 語句: " + command.CommandText);// 執行命令int rowsAffected = command.ExecuteNonQuery();// 提交事務transaction.Commit();Console.WriteLine($"成功更新 {rowsAffected} 行數據。");}}catch (Exception ex){Console.WriteLine("執行 SQL 出錯: " + ex.Message);// transaction.Rollback(); // 發生異常時回滾事務}}}}//增public static void InsertData(string name, string c1,string c2, string c3, string c4, string c5,string id, string dbName = "PowerField.db"){string sql = "INSERT INTO weili_canshu (name,can1,can2,can3,can4,can5,id) VALUES (@name, @can1, @can2, @can3, @can4, @can5, @id)";// 創建數據庫連接using (var connection = CreateDatabaseConnection(dbName)){connection.Open(); // 打開數據庫連接// 開始事務using (var transaction = connection.BeginTransaction()){try{// 創建命令對象using (var command = connection.CreateCommand()){command.CommandText = sql;// 添加參數command.Parameters.AddWithValue("@name", name);command.Parameters.AddWithValue("@can1", c1);command.Parameters.AddWithValue("@can2", c2);command.Parameters.AddWithValue("@can3", c3);command.Parameters.AddWithValue("@can4", c4);command.Parameters.AddWithValue("@can5", c5);command.Parameters.AddWithValue("@id", id);// 執行命令int rowsAffected = command.ExecuteNonQuery();// 提交事務transaction.Commit();Console.WriteLine($"成功插入 {rowsAffected} 行數據。");}}catch (Exception ex){Console.WriteLine("執行 SQL 出錯: " + ex.Message);transaction.Rollback(); // 發生異常時回滾事務}}}}
//刪public static void DeleteData(string x){// string x = DamangeAssessmentWarhead.Text;// 創建數據庫連接var connection = MySqLite.CreateDatabaseConnection("PowerField.db");connection.Open();// 開始事務SQLiteTransaction transaction = connection.BeginTransaction();try{// 創建命令對象SQLiteCommand command = connection.CreateCommand();command.CommandText = "DELETE FROM weili_canshu WHERE name ='" + x + "'";//當name=x時刪除該條數據// 執行命令并獲取受影響的行數int rowsAffected = command.ExecuteNonQuery();// 提交事務transaction.Commit();}catch (Exception ex){// 如果出現異常,回滾事務transaction.Rollback();Console.WriteLine("錯誤: " + ex.Message);}finally{// 關閉連接connection.Close();MessageBox.Show("刪除成功!");}// DamangeAssessmentWarhead.Items.Remove(x);}}//調用ExecuteQuery(查)與ExecuteNonQuery(增刪改)//例如 MySqLite.ExecuteQuery("SELECT * FROM weili_canshu");//直接寫mysql查詢語句//也可以自定義函數,調用方便 DeleteData();InsertData();等方法
一般查詢數據庫都要進行其他操作,所以查詢一般寫在類方法外面
//數據庫——查var connection = MySqLite.CreateDatabaseConnection("PowerField.db");connection.Open();var command = connection.CreateCommand();command.CommandText = "SELECT * FROM weili_canshu";var reader = command.ExecuteReader();while (reader.Read())//read既是所讀的一條數據,reader.GetString(0)代表數據的第一個值{
int id= reader.GetInt32(0);string name = reader.GetString(1);int age= reader.GetInt32(2);//id name age 數據讀到了Console.WriteLine(name);//數據已得到,可以根據自己情況進行數據處理Console.WriteLine(age.toString());}connection.Close();