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

相关推荐
自不量力的A同学几秒前
Redisson 4.2.0 发布,官方推荐的 Redis 客户端
数据库·redis·缓存
Exquisite.3 分钟前
Mysql
数据库·mysql
全栈前端老曹28 分钟前
【MongoDB】深入研究副本集与高可用性——Replica Set 架构、故障转移、读写分离
前端·javascript·数据库·mongodb·架构·nosql·副本集
R1nG86331 分钟前
CANN资源泄漏检测工具源码深度解读 实战设备内存泄漏排查
数据库·算法·cann
阿钱真强道1 小时前
12 JetLinks MQTT直连设备事件上报实战(继电器场景)
linux·服务器·网络·数据库·网络协议
逍遥德1 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring
笨蛋不要掉眼泪1 小时前
Redis哨兵机制全解析:原理、配置与实战故障转移演示
java·数据库·redis·缓存·bootstrap
Coder_Boy_1 小时前
基于SpringAI的在线考试系统-整体架构优化设计方案
java·数据库·人工智能·spring boot·架构·ddd
.房东的猫10 小时前
ERP(金蝶云星空)开发【安装篇】
c#
fen_fen10 小时前
Oracle建表语句示例
数据库·oracle