2025年C Access数据库使用

C Access数据库使用目录 一 创建 Access 数据文件 1 新建 Access 数据库文件 2 创建数据表 二 创建 C Winform 工程 1 配置文件 2 添加引用 3 创建三层架构 1 Model 模型 2 数据连接层 3 业务处理层

大家好,我是讯享网,很高兴认识大家。

目录

一、创建Access数据文件

1、新建Access数据库文件

2、创建数据表

二、创建C# Winform工程

1、配置文件

2、添加引用

3、创建三层架构

(1)Model模型

(2)数据连接层

(3)业务处理层

(4)UI界面程序

4、UI界面

 三、程序运行

1、查询数据总条数

2、删除数据

3、插入数据

4、读取数据

四、可空数据处理

1、向数据库中写空数据

2、C#读取数据库中空数据

五、工程下载连接


一、创建Access数据文件

1、新建Access数据库文件


讯享网

2、创建数据表

在菜单栏中->创建->表

ID、Age为长整型,Height为单精度

ID、Name为必须、其它为非必须即可不填

表命名为T_Person

二、创建C# Winform工程

1、配置文件

在App.Config文件中设置Access连接路径字符串

<connectionStrings> <add name="dbConnStr" connectionString="Provider= Microsoft.ACE.OLEDB.12.0;Jet OLEDB:DataBase Password='huobaby60945';Data Source=C:\Users\Administrator\Desktop\C# Access Test\AccessTest.accdb"/> </connectionStrings>

讯享网

2、添加引用

添加System.Configuration程序集

3、创建三层架构

分别设置数据连接层、业务处理层、UI层、Model,对应每个封装的类

(1)Model模型

创建PersonModel类

属性类型后面加 “?”,表示该类型为可空类型。string类型本身就是可空类型,所以不用加 “?”

讯享网class PersonModel { public long ID { get; set; } public string Name { get; set; } public int? Age { get; set; } public string AiHao { get; set; } public float? Height { get; set; } public DateTime? BirthDay { get; set; } }

(2)数据连接层

创建SqlAccesHelp类

读取App.Config中的连接字符串

private static string connString = ConfigurationManager.ConnectionStrings["dbConnstr"].ConnectionString;

封装ExecuteNonQuery

讯享网 /// <summary> /// 执行 Transact-SQL 语句并返回受影响的行数 /// </summary> /// <param name="sql">执行的sql语句</param> /// <param name="parameters">sql语句中的参数</param> /// <returns></returns> public static int ExecuteNonQuery(string sql, params OleDbParameter[] parameters) { using (OleDbConnection conn = new OleDbConnection(connString)) { conn.Open(); using (OleDbCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); //AddRange添加的是数组 return cmd.ExecuteNonQuery(); } } }

封装ExecuteScalar

 /// <summary> /// 执行查询,并返回查询所返回的结果集 /// </summary> /// <param name="sql">执行的sql语句</param> /// <param name="parameters">sql语句中的参数</param> /// <returns></returns> public static object ExecuteScalar(string sql, params OleDbParameter[] parameters) { using (OleDbConnection conn = new OleDbConnection(connString)) { conn.Open(); using (OleDbCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; //方法2 cmd.Parameters.AddRange(parameters); //AddRange添加的是数组 return cmd.ExecuteScalar(); } } }

封装ExecuteDataTable

讯享网 /// <summary> /// 只用来执行查询结果比较少的sql /// </summary> /// <param name="sql">执行的sql语句</param> /// <param name="parameters">sql语句中的参数</param> /// <returns></returns> public static DataTable ExecuteDataTable(string sql, params OleDbParameter[] parameters) { using (OleDbConnection conn = new OleDbConnection(connString)) { conn.Open(); using (OleDbCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; //方法2 cmd.Parameters.AddRange(parameters); //AddRange添加的是数组 OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); DataSet dataset = new DataSet(); adapter.Fill(dataset); return dataset.Tables[0]; //可以查询很多表,默认第一个 } } }

(3)业务处理层

创建PersonDAL类

获取数据总条数

 /// <summary> /// 获取数据总条数 /// </summary> /// <returns></returns> public static int GetCount() { return (int)SqlAccesHelp.ExecuteScalar("select count(*) from T_Person"); }

删除制定ID行数据

讯享网 /// <summary> /// 删除制定ID行数据 /// </summary> /// <param name="ID"></param> public static void DeleteByID(long ID) { SqlAccesHelp.ExecuteNonQuery("delete from T_Person where ID=@ID", new OleDbParameter("@ID", ID)); }

插入数据

 /// <summary> /// 插入数据。 /// </summary> /// <param name="person"></param> public static void Insert(PersonModel person) { SqlAccesHelp.ExecuteNonQuery("insert into T_Person(ID,Name,Age,AiHao,Height,BirthDay) values (@_ID,@_Name,@_Age,@_AiHao,@_Height,@_BirthDay)", new OleDbParameter("@_ID", person.ID), new OleDbParameter("@_Name", person.Name), new OleDbParameter("@_Age", ToDBValue(person.Age)), new OleDbParameter("@_AiHao", ToDBValue(person.AiHao)), new OleDbParameter("@_Height", ToDBValue(person.Height)), new OleDbParameter("@_BirthDay", ToDBValue(person.BirthDay)) ); }

读取数据表中指定ID的数据

讯享网 /// <summary> /// 读取数据表中指定ID的数据 /// </summary> /// <param name="ID"></param> /// <returns></returns> public static PersonModel GetByID(long id) { DataTable table = SqlAccesHelp.ExecuteDataTable("select * from T_Person where ID=@ID", new OleDbParameter("@ID", id)); if (table.Rows.Count <= 0) { return null; //不存在 } else if (table.Rows.Count > 1) { //主键重复 throw new Exception("ID存在重复"); } else { //DAL中不要返回DataTable、DataRow等ADO.Net的类 DataRow row = table.Rows[0]; PersonModel person = new PersonModel(); person.ID = (int)row["ID"]; person.Name = (string)row["Name"]; person.Age = (int)FromDBValue(row["Age"]); person.AiHao = (string)FromDBValue(row["AiHao"]); //string本身就是可空类型 person.Height = (float?)FromDBValue(row["Height"]); //可空类型 person.BirthDay = (DateTime?)FromDBValue(row["BirthDay"]); //可空类型 return person; } }

(4)UI界面程序

分别创建下列事件程序

①查询数据条数

②删除数据

③插入数据

④读取数据

4、UI界面

 三、程序运行

首先向数据库中手动插入几条数据,再分别执行下列4个测试操作

1、查询数据总条数

2、删除数据

3、插入数据

4、读取数据

四、可空数据处理

数据库中的空值为DBNull,C#程序中的空值为null。因此在相互读取和写入的时候需要进行类型转换。

1、向数据库中写空数据

当程序变量不赋值时候当前值为null,null不能直接往数据库中写入,因为数据库只认识DBNull。因此封装一个方法,在向数据库写入数据时将null转换为DBNull。

 /// <summary> /// 抽象的方法:判断往数据库写的数据是否为null /// </summary> /// <param name="value"></param> /// <returns></returns> public static object ToDBValue(object value) { if (value == null) { return DBNull.Value; } else { return value; } }

向数据库中写入数据时首先判断当前值是否为null,若为null则转换成DBnull

2、C#读取数据库中空数据

数据库中某一列没有值时,C#程序读取其值为DBNull,DBNull经过转换成null才能进行变量赋值。

讯享网 /// <summary> /// 抽象的方法,判断从数据库中读的数据是否为null。如果value这个数据库中的值为DBNull,则返回null /// </summary> /// <param name="value"></param> /// <returns></returns> public static object FromDBValue(object value) { if (value == DBNull.Value) { return null; } else { return value; } }

 读取数据库数据时首先判断其是不是DBNull类型

五、工程下载连接

本案例讲解的

https://download.csdn.net/download/panjinliang066333/

基本的

C#Access数据库使用-C#文档类资源-CSDN下载

小讯
上一篇 2025-03-12 13:03
下一篇 2025-04-11 08:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/125597.html