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

ACCESS简介

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

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

cs 复制代码
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

相关推荐
nongcunqq3 小时前
abap 操作 excel
java·数据库·excel
rain bye bye4 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
R-G-B4 小时前
【02】C#入门到精通——C# 变量、输入/输出、类型转换
开发语言·c#·c# 变量·c#输入/输出·c#类型转换
星河队长4 小时前
C# 软件加密方法,有使用时间限制,同时要防止拷贝
开发语言·c#
阿里云大数据AI技术5 小时前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
Aevget5 小时前
DevExpress WinForms v25.1亮点 - PDF Viewer(查看器)等全新升级
pdf·c#·界面控件·winform·devexpress·ui开发
不剪发的Tony老师6 小时前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_307779136 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
InCerry6 小时前
为 .NET 10 GC(DATAS)做准备
性能优化·c#·.net·gc
六元七角八分6 小时前
pom.xml
xml·数据库