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.mzph.cn/bicheng/14519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【openlayers系统学习】1.1渲染GeoJSON,添加link交互

一、渲染GeoJSON 在进入编辑之前,我们将看一下使用矢量源和图层进行基本要素渲染。Workshop在 data​ 目录中包含一个 countries.json​ GeoJSON文件。我们首先加载该数据并将其渲染在地图上。 首先,编辑 index.html​ 以便向地图添加深色背景&#xf…

使用llama.cpp实现LLM大模型的格式转换、量化、推理、部署

使用llama.cpp实现LLM大模型的量化、推理、部署 大模型的格式转换、量化、推理、部署概述克隆和编译环境准备模型格式转换GGUF格式bin格式 模型量化模型加载与推理模型API服务模型API服务(第三方)GPU推理 大模型的格式转换、量化、推理、部署 概述 llama.cpp的主要目标是能够在…

【软考中级 软件设计师】数据结构

数据结构是计算机科学中一个基础且重要的概念,它研究数据的存储结构以及在此结构上执行的各种操作。在准备软考中级-软件设计师考试时,掌握好数据结构部分对于通过考试至关重要。下面是一些核心知识点概览: 基本概念: 数据结构定义…

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)公钥基础设施,是提供公钥加密和数字签名服务的系统或平台,是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。企业…

element-plus:踩坑日记

el-table Q:有fixed属性时,无数据时,可能出现底部边框消失的bug 现象: 解决方法: .el-table__empty-block {border-bottom: 1px solid var(--el-table-border-color); } el-collapse 折叠面板 Q:标题上…

云平台的安全能力提升解决方案

提升云平台的安全能力是确保数据和服务安全的关键步骤。针对大型云平台所面临的云上安全建设问题,安全狗提供完整的一站式云安全解决方案,充分匹配云平台安全管理方的需求和云租户的安全需求。协助大型云平台建设全网安全态势感知、统一风险管理、统一资…

PCIE协议-4-物理层逻辑模块

4.1 简介 物理层将事务层和数据链路层与用于链路数据交换的信令技术隔离开来。物理层被划分为逻辑物理层和电气物理层子模块(见图4-1)。 4.2 逻辑物理层子模块 逻辑子模块有两个主要部分:一个发送部分,它准备从数据链路层传递过…

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%以上都可以在网站内找到,并且支持免费下…

linux中ansible整理笔记

一、工作模式 1. adhoc临时命令 语法: ansible 主机或者组列表 -m 模块 -a “参数” 2. playbook 语法: ansible-playbook xxx.yml 二、模块 1. ping 2.command:默认模块(不支持重定向,管道) 3.shell:类似com…

IP地址显示“不安全”怎么办|已解决

解决IP地址显示“不安全”的问题,通常需要确保网站或服务使用HTTPS协议进行加密通信,可以通过部署SSL证书来解决,以下是具体的解决步骤: 1 申请IP地址SSL证书:网站管理员应向证书颁发机构(CA)申…

网络拓扑—WEB-IIS服务搭建

文章目录 WEB-IIS服务搭建网络拓扑配置网络IISPC 安装IIS服务配置IIS服务(默认站点)PC机访问网页 配置IIS服务(新建站点)PC机访问网页 WEB-IIS服务搭建 网络拓扑 //交换机忽略不计 IIS服务IP:192.168.1.1 PC机IP&…

人类交互2 听觉处理和语言中枢

人类听觉概述 人类听觉是指通过耳朵接收声音并将其转化为神经信号,从而使我们能够感知和理解声音信息的能力。听觉是人类五种感觉之一,对我们的日常生活和交流至关重要。 听觉是人类交流和沟通的重要工具。通过听觉,我们能够听到他人的语言…

安装错误提示Please run MaterialLibrary2018.msi first或者其他MaterialLibrary版本

打开autoremove,系统检查,点击开始检查。检查完成修复。 可以解决部分该问题,如果没解决的请咨询

Linux中的文件描述符

1.系统调用接口和库函数的关系 函数:fopen fclose fread fwrite 都是c标准库当中的函数,也就是用户操作接口中ibc系统调用:open close read write 都是系统调用提供的接口 c语言中接口底层封装的都是系统调用接口 FILE* stdin stdout stderr…