c#之Access数据库基本操作

本文分享了使用C#进行Access数据库操作的基本方法,包括连接数据库、执行SQL语句插入数据及读取数据显示等内容。

Access作为一个小巧的移动数据库,做小型程序的开中发应用很广泛,也很方便。

这里,和大家分享下,Access数据库操作(c#)的一些基本操作。

 

 

首先,是命名空间:

using System.Data.OleDb;    //OleDB数据库命名空间

接着是连接字符串,也可以看做连接协议:

string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=****.mdb"; //***.mdb为你要连接的数据库名或路径,记住是mdb文件类型

出于方便,数据源一般存在在Debug文件下。

 

再接下来,当然是进行连接和执行sql语句,如下:

OleDbConnection oledbCon = new OleDbConnection(strCon); //创建OleDbConnection连接对象

oledbCon.Open(); //打开连接

 string strSql = "insert into student(StudentID, Name, Sex, ClassID) values('0001', 'Tom', '男', 'Class2');  //要执行的sql语句---往student表添加一条信息
OleDbCommand oledbCom = new OleDbCommand(strSql, oledbCon); //创建OleDbCommand ,sql语句执行对象
oledbCom.ExecuteNonQuery();  //执行sql语句

oledbCon.Close(); //关闭连接,随手关闭连接时好习惯

 

这样,就完成了一条简单的sql语句执行。(但在实际编程中,sql执行语句一般应放入try,catch语句中,在后面会给出完整代码)

打开Access,你会看到student表多了一条新纪录,说明操作成功。

这里说下,我举例的Student表结构:

字段名           数据类型

StudentID    文本

Name           文本

Sex              文本

ClassID        文本

 

 

接下来,讲下如何获取student表内容并显示出来,使用OleDbDataAdapter对象。

其实,步骤同上差不多。只是更改了橙色字体处。更改如下:

 string strSql = "select StudentId as 学号, Name as 姓名, Sex as 性别, ClassID as 班级 from student order by StudentID";   //要执行的sql语句----读取Student表内所有数据,并以学号问主序进行排序

OleDbDataAdapter oledbDA = new OleDbDataAdapter(strSql, oledbCon);   //创建OleDbDataAdapter对象,获取信息

DataSet ds = new DataSet();  //创建DataSet对象,用于存放信息,可以存放多张表信息
oledbDA.Fill(ds, "student");  //从OleDbDataAdapter获取信息,存放到DataSet中,"student"可以更改,只是标识名

内容取出来了,那么接下来是显示。

这里使用DataGridView控件,来显示。在“工具箱”下的“数据”一栏,即可找到该控件。

要在DataGridView显示出结果,我们还要对它进行数据绑定。添加下面语句:

dataGridView1.DataSource = ds.Tables[0];

这样,就完成了,是不是很简单,很方便。如果,你想了解更多,请继续留意本博客,在后面,会继续介绍一些常用的数据控件,如DataGridView,BindingNavigator等用法。

 

 

数据库的读取方式还有一种,是通过OleDbDataReader对象实现。这种方式,是只读的,也就是说,你只能读,不能修改添加之类。

还有,一点要注意,OleDbDataReader操作时,是独占数据库的,其它数据操作不能同时进行,只有等它完成后,才可。最后,注意一点,OleDbDataReader操作后,必须要关闭,否则报错。

下面给出它的执行代码(也是替换最上面代码橙色部分就可以):

string strSql = "select StudentId as 学号, Name as 姓名, Sex as 性别, ClassID as 班级 from student order by StudentID";   //要执行的sql语句----读取Student表内所有数据,并以学号问主序进行排序

OleDbCommand oledbCom = new OleDbCommand(strSql, oledbCon);  //创建OleDbCommand
OleDbDataReader oledbReader = oledbCom.ExecuteReader();  //创建OleDbDataReader,并把oledbCom执行结果赋予oledbReader

while(oledbDR.Read()) //如果oledbDR.Read()读取内容不为空,则继续。注意下,每执行一条oledbDR.Read(),oledbDR会自动转到下一条信息

{

 MessageBox.Show("该学生信息:" + "/n" + oledbDR["StudentID"].ToString()+ "/n" + oledbDR["Name"].ToString());

}

oledbDR.Close();    //必须关闭OleDbDataReader

 

这里,Access数据库连接基本操作讲完了。

下面附录下第一段代码的完整源代码,后面的代码类似,就不重复了:

/// <summary>
        /// 执行sql操作
        /// </summary>
        /// <param name="strSql">要执行的sql语句</param>
        public  static void DoSql(string  strSql)
        {

            OleDbConnection oledbCon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Student.mdb");//创建连接,参数为数据库连接字段
            try
            {

                oledbCon.Open();
                OleDbCommand oledbCom = new OleDbCommand(strSql, oledbCon);
                oledbCom.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("执行失败:" + ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                oledbCon.Close();
            }
        }

 

在后面,将讲解SQLServer的基本数据库操作。其实,同Access连接很类似。不同的是,它的sql语句语法,以及功能更加强大,如增加了存储过程。

补充下,Access日期数据类型是一个难点。

如果要操作Access日期数据类型,请参看:

http://blog.csdn.net/kkfdsa132/archive/2010/03/19/5396530.aspx

 

 

希望,对大家有用!

本文介绍C#访问操作Access数据库的基础知识,并提供一个相关的例程。 1.通过ADO.NET的OleDb相关类来操作Access 主要知识点如下: using System.Data.OleDb; using System.Data; 连接字符串:String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb"; 建立连接:OleDbConnection connection = new OleDbConnection(connectionString); 使用OleDbCommand类来执行Sql语句: OleDbCommand cmd = new OleDbCommand(sql, connection); connection.Open(); cmd.ExecuteNonQuery(); 2.取得Access自增标识字段在插入数据后的id值 cmd.CommandText = @"select @@identity"; int value = Int32.Parse(cmd.ExecuteScalar().ToString()); return value; 3.执行事务 需要用到OleDbTransaction,关键语句如下: OleDbConnection connection = new OleDbConnection(connectionString); OleDbCommand cmd = new OleDbCommand(); OleDbTransaction transaction = null; cmd.Connection = connection; connection.Open(); transaction = connection.BeginTransaction(); cmd.Transaction = transaction; cmd.CommandText=sql1; cmd.ExecuteNonQuery(); cmd.CommandText=sql2; cmd.ExecuteNonQuery(); transaction.Commit(); 4.执行查询,返回DataSet OleDbConnection connection = new OleDbConnection(connectionString); DataSet ds = new DataSet(); connection.Open(); OleDbDataAdapter da = new OleDbDataAdapter(sql, connection); da.Fill(ds,"ds"); 5.分页查询 分页查询使用OleDbDataReader来读取数据,并将结果写到一个DataSet中返回。 以上内容封装为三个可重用的类:AccessDBUtil,AccessPageUtil,Page 代码这里下载AccessDBUtilDemo.rar (191.37 KB , 下载:999次) 本例程是一个c#的winform程序,但是数据访问类可以在Web环境下使用。 本例程演示了: 1.Access数据库的插入,更新,修改,查询; 2.带参数的sql语句的使用,而不是拼SQL; 3.使用DataReader的分页查询,而不是用嵌套的SQL语句来分页; 4.用事务同时执行多个SQL语句; 5.在插入数据的同时返回最新的ID值; 6.整型,实型,字符串,日期型,布尔型五种数据类型的操作; 7.使用正则表达式来验证整数和实数; 8.listview用来显示数据的一些基本用法。 本示例不包括: 1.高效的分页查询,仅仅是提供了一种分页的方法,但我认为DataReader应该比嵌套的SQL语句快(未测试)。 2.完善的分页封装,只提供了分页的简单包装。 3.嵌套的事务处理,提供了同时执行多个sql语句的事务处理,但不支持嵌套事务。 4.listview的使用,只是利用winform控件来演示数据访问,因此不能作为winform编程的良好示例,例如添加数据时界面并没有很好地更新。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值