首页 > 编程语言 >C#实现的ACCESS的增删改查基本功能

C#实现的ACCESS的增删改查基本功能

时间:2024-12-06 11:28:59浏览次数:16  
标签:C# 数据库 cmd 改查 ACCESS OleDbConnection using ID conn

ACCESS简介
Microsoft Access 是一款由微软开发的关系型数据库管理系统(RDBMS),它是Microsoft Office套件的一部分,旨在为中小型企业、开发人员及个人用户提供简便而强大的数据库功能。Access结合了数据库管理的强大功能与图形化界面的易用性,能够方便地创建、管理和分析数据。它广泛用于数据存储、查询、报告和应用程序开发。

本文介绍了用C#实现ACCESS数据库的增删改查功能。具体代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;

namespace AccessTest
{
    class Program
    {
        // 定义数据库连接字符串,指定使用Microsoft ACE OLEDB 12.0提供程序连接Access数据库
        static string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrator\Desktop\AccessTest\bin\Debug\database.accdb";
        
        // 主方法,程序入口
        static void Main(string[] args)
        {
            // 调用插入数据方法(目前注释掉)
            //InsertData("John Doe", 20, "A");

            // 修改数据(注释掉)
            //UpdateData(1, "John Smith", 21, "B");

            // 删除数据(注释掉)
            //DeleteData(1);

            // 查找并打印所有数据
            GetAllData();
        }

        // 删除数据:根据给定的ID删除记录
        static void DeleteData(int id)
        {
            // 使用OleDbConnection连接到数据库
            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                // 构建SQL查询,删除指定ID的记录
                string query = "DELETE FROM Students WHERE ID = @ID";
                OleDbCommand cmd = new OleDbCommand(query, conn);
                
                // 为查询命令添加参数,防止SQL注入
                cmd.Parameters.AddWithValue("@ID", id);

                // 打开数据库连接
                conn.Open();
                
                // 执行删除操作,返回受影响的行数
                int rowsAffected = cmd.ExecuteNonQuery();
                
                // 根据受影响的行数判断删除是否成功
                if (rowsAffected > 0)
                {
                    Console.WriteLine("Data deleted successfully.");
                }
                else
                {
                    Console.WriteLine("No data found with the specified ID.");
                }
            }
        }

        // 修改数据:根据给定ID更新学生的姓名、年龄和成绩
        static void UpdateData(int id, string name, int age, string grade)
        {
            // 使用OleDbConnection连接到数据库
            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                // 构建SQL更新查询语句
                string query = "UPDATE Students SET Name = @Name, Age = @Age, Grade = @Grade WHERE ID = @ID";
                OleDbCommand cmd = new OleDbCommand(query, conn);
                
                // 为查询命令添加参数
                cmd.Parameters.AddWithValue("@Name", name);
                cmd.Parameters.AddWithValue("@Age", age);
                cmd.Parameters.AddWithValue("@Grade", grade);
                cmd.Parameters.AddWithValue("@ID", id);

                // 打开数据库连接
                conn.Open();
                
                // 执行更新操作,返回受影响的行数
                int rowsAffected = cmd.ExecuteNonQuery();
                
                // 根据受影响的行数判断更新是否成功
                if (rowsAffected > 0)
                {
                    Console.WriteLine("Data updated successfully.");
                }
                else
                {
                    Console.WriteLine("No data found with the specified ID.");
                }
            }
        }

        // 获取并打印所有数据:查询数据库中所有学生信息并显示
        static void GetAllData()
        {
            // 使用OleDbConnection连接到数据库
            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                // 构建SQL查询语句,获取所有学生记录
                string query = "SELECT * FROM Students";
                
                // 创建OleDbDataAdapter来执行查询并填充数据
                OleDbDataAdapter da = new OleDbDataAdapter(query, conn);
                DataTable dt = new DataTable();
                da.Fill(dt);

                // 打印表头
                Console.WriteLine("ID | Name       | Age | Grade");
                Console.WriteLine("--------------------------------");
                
                // 遍历所有数据行并输出
                foreach (DataRow row in dt.Rows)
                {
                    Console.WriteLine($"{row["ID"]} | {row["Name"]} | {row["Age"]} | {row["Grade"]}");
                }

                // 等待用户按键以结束
                Console.ReadKey();
            }
        }

        // 增加数据:插入新学生记录到数据库
        static void InsertData(string name, int age, string grade)
        {
            // 使用OleDbConnection连接到数据库
            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                // 构建SQL插入语句
                string query = "INSERT INTO Students (Name, Age, Grade) VALUES (@Name, @Age, @Grade)";
                OleDbCommand cmd = new OleDbCommand(query, conn);
                
                // 为查询命令添加参数
                cmd.Parameters.AddWithValue("@Name", name);
                cmd.Parameters.AddWithValue("@Age", age);
                cmd.Parameters.AddWithValue("@Grade", grade);

                // 打开数据库连接
                conn.Open();
                
                // 执行插入操作
                cmd.ExecuteNonQuery();
                
                // 输出操作成功的提示信息
                Console.WriteLine("Data inserted successfully.");
            }
        }
    }
}

主要功能:
连接数据库:所有与数据库交互的操作都是通过 OleDbConnection 来完成的,connectionString 连接到本地的 Access 数据库。
增、删、改、查操作:
增(InsertData):插入一条新的学生记录。
删(DeleteData):根据学生ID删除记录。
改(UpdateData):根据学生ID更新记录的姓名、年龄和成绩。
查(GetAllData):获取所有学生数据,并打印到控制台。
参数化查询:所有的SQL查询都使用参数化方式,防止SQL注入。
数据读取与展示:OleDbDataAdapter 用于从数据库读取数据,DataTable 用于存储并遍历查询结果。
注释重点:
连接数据库:通过 OleDbConnection 来打开连接,并使用 using 语句确保连接被及时关闭。
防止SQL注入:使用 OleDbCommand 的参数化查询来避免SQL注入攻击。
操作反馈:操作完成后,控制台会显示提示信息,告诉用户数据是否成功修改或删除。

3. 总结

本文展示了如何通过 C# 实现对 Access 数据库的基本增、删、改、查功能。在实际开发中,使用 C# 与 Access 数据库结合,可以快速实现数据操作和管理。通过注释掉的不同方法,可以根据需要执行相应的增、改、查、删操作。这种方式简洁有效,适用于中小型应用的数据库管理需求。

源码地址:https://download.csdn.net/download/weixin_44643352/90058758

标签:C#,数据库,cmd,改查,ACCESS,OleDbConnection,using,ID,conn
From: https://blog.csdn.net/weixin_44643352/article/details/144285094

相关文章

  • WPF Prism ViewInjection
    ViewInjection介绍ViewInjection是Prism框架提供的一种机制,用于将视图动态地注入到指定的容器(Region)中。这种注入方式允许你在运行时动态地添加、移除或替换视图,从而实现更灵活的用户界面设计。ViewInjection示例GitHub地址:https://github.com/PrismLibrary/Prism-Samples-Wpf/......
  • CSS 实现字体颜色渐变
    CSS实现字体颜色渐变在CSS中,可以通过background-clip和text-fill-color等属性来实现字体颜色渐变。以下是实现字体颜色渐变的基本步骤和示例代码:示例代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"......
  • 8-bit Optimizers via Block-wise Quantization
    目录概8-bitOptimizersDettmersT.,LewisM.,ShleiferS.andZettlemoyerL.8-bitoptimizersviablock-wisequantization.ICLR,2022.概本文提出了一种8-bit的优化器,其主要贡献算是block-wise的量化(从我的角度看一点也不novel)?8-bitOptimizers对于......
  • C++14关联容器set自定义排序函数报错
    十年前的一个C++项目编译报错:“boolcompatetor_asc::operator()(conststd::wstring&,conststd::wstring&)”:不能将“this”指针从“constcompatetor_asc”转换为“compatetor_asc&”。对应的代码如下:classcompatetor_asc{public:booloperator()(conststd::......
  • C++中,哪些情况会分别导致segmentation fault 和 aborted
    在C++中,segmentationfault和aborted是两种不同的运行时错误,它们有不同的原因:SegmentationFaultsegmentationfault(通常表现为SIGSEGV信号)是一个错误,通常发生在程序试图访问一个它没有权限访问的内存区域,或者访问了一个根本不存在的内存地址。这通常是由于指针错误或数组越......
  • idea的maven插件的artifactId显示红色波浪线
    在IntelliJIDEA中,如果Maven项目中的某个 artifactId 出现红色波浪线,通常意味着项目配置中有一些问题,比如依赖解析失败、版本冲突等。要找出具体的原因,可以按照以下步骤进行排查:1.查看 pom.xml 中的详细错误信息悬停查看:将鼠标悬停在红色波浪线的 artifactId 上,IDEA......
  • 【Spring】logback-spring.xml 日志配置
     写项目没关注过这个东西,项目工程文件也是同事从别的项目上搬过来的测试跑环境发现不打印日志了,叫我看看怎么个事情我们找到 logback-spring.xml 文件<?xmlversion="1.0"encoding="UTF-8"?><configurationscan="true"scanPeriod="10seconds"><!--start:控制......
  • 使用Tesseract进行图片文字识别
    Tesseract介绍Tesseract是一个开源的光学字符识别(OCR)引擎,最初由HP在1985年至1995年间开发,后来被Google收购并开源。Tesseract支持多种语言的文本识别,能够识别图片中的文字,并将其转换为可编辑和可搜索的数据格式。它适用于多种应用场景,包括文档扫描、图像处理、数字存档......
  • CPU_和C++_计算机组成原理-嵌入式系统-C++
    CPUCPU(CentralProcessingUnit,中央处理器)CPU缓存流水线Pipelining超线程Hyper-ThreadingCPU调度(CPUScheduling)和上下文切换(ContextSwitching)让控制器从存储器中读取二进制并解释然后让运算器去计算数值CPU核心组件:算术逻辑单元(ALU):执行算术和逻辑操作。寄存......
  • C# FileStream、StreamReader/Writer、MemoryStream
    提及文件流,不得不先说以下几个类FileStream,MemoryStream,NetWorkStream,StreamReader,StreamWriter,TextReader,TextWriter在用这些类之前,我们先来了解一下这些类的用途以及区别。先声明一个路径:string path=“D:/Stream/IO.txt”;一:FileStream类用途:主要用于对磁盘上文件的读写,常......