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

相关推荐
雪豹阿伟1 小时前
21.Winfrom —— 定时器、日期选择器、进度条、表格、DataTable
c#·上位机·winfrom
微学AI1 小时前
时序大模型 TimechoAI 赋能工业时序数据底层技术优势与实操
数据库·大模型·时序大模型
z落落1 小时前
C#WinForm控件实战:Panel与单选框动态创建
开发语言·c#
北顾笙9801 小时前
MYSQL-day03
数据库·sql·mysql
MXsoft6181 小时前
**混合云统一监控实践:私有云+公有云的一体化运维方案**
运维·网络·数据库
瀚高PG实验室1 小时前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库
ULIi096kr1 小时前
MySQL大表优化终极方案:单表数据量上限、卡顿解决、分表分库实战教程
数据库·mysql
霖霖总总2 小时前
[MongoDB小技巧07]MongoDB 深度解析:find中投影与排序的底层机制与性能调优实战
数据库·mongodb
TechWayfarer2 小时前
云服务器地域怎么选:用离线IP数据库识别用户来源并优化部署
服务器·数据库·python·tcp/ip·数据分析
deviant-ART2 小时前
MySQL里的三个concat函数
数据库·mysql