c#數據庫的增刪改查

**

安裝數據庫包

**
在使用 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();

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14519.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14519.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14519.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【openlayers系統學習】1.1渲染GeoJSON,添加link交互

一、渲染GeoJSON 在進入編輯之前,我們將看一下使用矢量源和圖層進行基本要素渲染。Workshop在 data? 目錄中包含一個 countries.json? GeoJSON文件。我們首先加載該數據并將其渲染在地圖上。 首先,編輯 index.html? 以便向地圖添加深色背景&#xf…

Vue 組件的生命周期鉤子有哪些用途是什么

Vue 組件的生命周期鉤子提供了在不同階段執行特定邏輯的機會,這些鉤子在組件的創建、掛載、更新、銷毀等過程中被調用。以下是每個生命周期鉤子的常見用途: beforeCreate 用途:由于在這個階段,組件的 data、computed、methods 和…

使用llama.cpp實現LLM大模型的格式轉換、量化、推理、部署

使用llama.cpp實現LLM大模型的量化、推理、部署 大模型的格式轉換、量化、推理、部署概述克隆和編譯環境準備模型格式轉換GGUF格式bin格式 模型量化模型加載與推理模型API服務模型API服務(第三方)GPU推理 大模型的格式轉換、量化、推理、部署 概述 llama.cpp的主要目標是能夠在…

【代碼隨想錄算法訓練營第37期 第十五天 | LeetCode226.翻轉二叉樹、101.對稱二叉樹 2】

代碼隨想錄算法訓練營第37期 第十五天 | LeetCode226.翻轉二叉樹、101.對稱二叉樹 2 一、226.翻轉二叉樹 解題代碼C: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : …

【軟考中級 軟件設計師】數據結構

數據結構是計算機科學中一個基礎且重要的概念,它研究數據的存儲結構以及在此結構上執行的各種操作。在準備軟考中級-軟件設計師考試時,掌握好數據結構部分對于通過考試至關重要。下面是一些核心知識點概覽: 基本概念: 數據結構定義…

VBA_MF系列技術資料1-615

MF系列VBA技術資料1-615 為了讓廣大學員在VBA編程中有切實可行的思路及有效的提高自己的編程技巧,我參考大量的資料,并結合自己的經驗總結了這份MF系列VBA技術綜合資料,而且開放源碼(MF04除外),其中MF01-0…

spring-boot集成slf4j(二)logback配置詳解

一、configuration 根節點:configuration,作為頂級標簽, 可以用來配置一些lockback的全局屬性,常見的屬性如下: (1)scan“true” :scan是否開啟自動掃描,監控配置文件更…

el-table 組件實現 “合并單元格 + N行數據小計” 功能

目錄 需求 - 要實現的效果初始代碼代碼升級(可供多個表格使用)CommonTable.vue 子組件 使用子組件1 - 父組件 - 圖1~圖3使用效果展示 使用子組件2 - 父組件 - 圖4使用效果展示 注意【代碼優化 - 解決bug】 需求 - 要實現的效果 父組件中 info 數據示例 …

內網安全之證書服務基礎知識

PKI公鑰基礎設施 PKI(Public Key Infrastructure)公鑰基礎設施,是提供公鑰加密和數字簽名服務的系統或平臺,是一個包括硬件、軟件、人員、策略和規程的集合,用來實現基于公鑰密碼體制的密鑰和證書的產生、管理、存儲、分發和撤銷等功能。企業…

Android Debug Bridge(ADB)命令使用

引言 Android Debug Bridge(ADB)是一套功能強大的命令行工具,它為Android開發者和高級用戶提供了與Android設備通信的能力。無論是進行應用開發、測試還是執行日常設備管理任務,ADB都是不可或缺的工具。本文將詳細介紹一些常用的…

element-plus:踩坑日記

el-table Q:有fixed屬性時,無數據時,可能出現底部邊框消失的bug 現象: 解決方法: .el-table__empty-block {border-bottom: 1px solid var(--el-table-border-color); } el-collapse 折疊面板 Q:標題上…

云平臺的安全能力提升解決方案

提升云平臺的安全能力是確保數據和服務安全的關鍵步驟。針對大型云平臺所面臨的云上安全建設問題,安全狗提供完整的一站式云安全解決方案,充分匹配云平臺安全管理方的需求和云租戶的安全需求。協助大型云平臺建設全網安全態勢感知、統一風險管理、統一資…

加強堆(大根堆)

way:看上去好像就是加了個indexMap記錄節點在數組heap中的下標,然后就是可以查到某個元素是否在堆里并且可以進行位置的調整,普通的堆是沒法知道元素是不是在的,只能彈堆頂元素,插入到堆尾這樣子。如果覺得heapSize有點…

PCIE協議-4-物理層邏輯模塊

4.1 簡介 物理層將事務層和數據鏈路層與用于鏈路數據交換的信令技術隔離開來。物理層被劃分為邏輯物理層和電氣物理層子模塊(見圖4-1)。 4.2 邏輯物理層子模塊 邏輯子模塊有兩個主要部分:一個發送部分,它準備從數據鏈路層傳遞過…

Spring 中常用的手動裝載 bean 方法

在 Spring 的 bean 裝載條件中,雖然 Spring 給我們提供了非常好用便捷的 Condition 相關注解,但是很多時候 Condition 相關注解并不滿足我們的需求,我需要更復雜的條件手動控制是否裝置 bean。這個時候我們就可以實現 Spring 為我們提供的幾個…

域名DNS添加CAA記錄

目錄 概述 檢測CAA記錄 添加CAA記錄 概述 DNS CAA(Certificate Authority Authorization)記錄是一種不太常見的DNS記錄類型,它主要用于鎖定證書頒發機構(CA)列表,以確保只有特定的CA可以為某個域名頒發SSL/TLS證書。CAA記錄是保護域名免受釣魚攻擊的安全措施,通過限制…

v-md-editor和SSE實現ChatGPT的打字機式輸出

概述 不論是GPT還是文心一言,在回答的時候類似于打字機式的將答案呈現給我們,這樣的交互一方面比較友好,另一方面,當答案比較多、生成比較慢的時候也能爭取一些答案的生成時間。本文后端使用express和stream,使用SSE將…

Boosting Cache Performance by Access Time Measurements——論文泛讀

TOC 2023 Paper 論文閱讀筆記整理 問題 大多數現代系統利用緩存來減少平均數據訪問時間并優化其性能。當緩存未命中的訪問時間不同時,最大化緩存命中率與最小化平均訪問時間不同。例如:系統使用多種不同存儲介質時,不同存儲介質訪問時間不同…

【C++初階】—— 類和對象 (上)

📝個人主頁🌹:EterNity_TiMe_ ?收錄專欄?:C “ 登神長階 ” 🌹🌹期待您的關注 🌹🌹 類和對象 1. 初步認識C2. 類的引入3. 類的定義聲明和定義全部放在類體中聲明和定義分開存放 4.…

8個實用網站和軟件,收藏起來一定不后悔~

整理了8個日常生活中經常能用得到的網站和軟件,收藏起來一定不會后悔~ 1.ZLibrary zh.zlibrary-be.se/這個網站收錄了超千萬的書籍和文章資源,國內外的各種電子書資源都可以在這里搜索,98%以上都可以在網站內找到,并且支持免費下…