目录

一、创建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;//方法2cmd.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;//方法2cmd.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/85663649

基本的

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

C# Access数据库使用相关推荐

  1. ACCESS数据库防止下载

    1. 修改数据库名.这是常用方法,将数据库名该成怪异名字或长名字,以防别人猜测.一旦被人猜到,别人还是能下载数据库文件,但几率不大.如将数据库database.mdb改成dslfjds$^&i ...

  2. 技术图文:如何利用 C# 向 Access 数据库插入大量数据?

    背景 通常我们在做数据分析与处理之前,需要把从网站爬取的数据或者从 甲方 系统中导出的数据存入到自己的数据库中.如果数据量小,直接利用 SQL的 Insert 语句逐条插入就好.可是数据量上万条之后, ...

  3. 如何使用C++ Builder 6.0连接Access数据库

    本文假定所需连接的Access数据库为db_restaurant,如何连接db_restaurant,现在将拉开帷幕. 首先,通过使用"File→New→Data Module"创 ...

  4. 关于Access数据库执行Update语句后,不报错,但影响行数总是返回0的问题

    最近碰到一个奇怪的问题,使用Access数据库执行Update语句后,不报错,但影响行数总是返回0. 因为是第一次碰到这个问题,纠结了半天.后来在网上搜索得到解决方案: SQL语句传参数的顺序和语句中 ...

  5. 在Windows 2003 64位下ASP无法连接Access数据库的解决办法

    前几天安装好了 Windows 2003 64bit系统,在上面跑了一个asp的网站,在连接access数据库时出错误,google过后果然发现了一个办法,就是让IIS以32位的方式运行,只要在命令行 ...

  6. python连接access数据库查询并打印出来_Python连接Access和读取Access数据库的例子

    其实这个Python连接Access和读取Access数据库的例子是写给自己看的,网上已经有Python读取Access的例子了,我这个也是参考以上制作的. 而这个例子应该是只能在windows使用吧 ...

  7. 使用c#訪问Access数据库时,提示找不到可安装的 ISAM

    使用c#訪问Access数据库时,提示找不到可安装的 ISAM.例如以下图: 代码例如以下: connectionString = "Provider=Microsoft.Jet.OLEDB ...

  8. 使用VC连接Access数据库的两种方法

    以前的时候用VC写了两种连接Access数据库的方法,为了方便以后查找把这两种方法做一下简单的介绍.Windows平台的数据接口标准有ODBC.OLE DB.ADO和Borland的BDE接口,ODB ...

  9. .NET中防止Access数据库下载

    .net中防止access数据库下载 如何防止access数据库下载是一个很老的话题了,网上的讨论也比较多.在这里只是探讨asp.net下防止access数据库被下载的方法,有些是对以前方法的总结,部 ...

  10. 长期使用中型Access数据库的一点经验

    Access数据库在用的过程中, 经常不断的进行删除和增加记录的操作,会出现以下问题: 1. 可能会使Update语句更新失败, 明明一条记录存在, 也可以select到,但在用Update时出现找不 ...

最新文章

  1. python中enumerate()函数_Python enumerate() 函数
  2. php嵌套 frame,终极解决禁止网站被别人通过iframe引用嵌套套入。
  3. Linux vim命令模式、末行模式、编辑模式相互切换
  4. 2020 科大讯飞全球开发者大会节目单来了!
  5. 【转】Pro Android学习笔记(一):Android 平台 2013.6.4
  6. Java的Socket编程
  7. java代码实现画板_求好心人帮找或做个JAVA画板程序 代码,主要能实现简单的画板功能!...
  8. bzoj 3114: Uva12546 Lcm Pair Sum
  9. Mac最好用的SSH工具———SecureCRT使用以及下载
  10. 深度linux操作系统
  11. salt returner mysql_saltstack mysql returner
  12. win10安装oracle数据库失败
  13. idea报错 No valid Maven installation found.maven不能用
  14. Android网络:开发浏览器(五)——功能完善之保存图片实现
  15. 坦克大战项目c语言代码,c语言 坦克大战 游戏源码下载
  16. 不管是否情愿,5G要来了,运营商该做的事一样也不能少
  17. 谷歌今遭遇史上至暗时刻,美司法部正式提起反垄断诉讼!22年前微软曾有此劫-1
  18. html6能代替原生app,网页转APP工具能否取代原生APP?这个在线制作平台,让移动开发更简单...
  19. android控制板
  20. 2021年度训练联盟热身训练赛第八场

热门文章

  1. Python新闻网站项目-8.Django前端Web部署
  2. 物联网网络编程、Web编程综述
  3. VC知识库博客转到这里来写
  4. Oracle数据库学习心得(一)
  5. 【Web 三件套】个人简单博客系统页面搭建(附源码)
  6. 我的常用数据软件大公开
  7. 高质量程序设计指南C++学习总结一
  8. 如何避免出现SQL注入漏洞
  9. 更改图书信息c语言编码,图书管理系统C语言实现源代码.pdf
  10. python中输出语句的怎么写_python的输出语句怎么写