您的位置:首页 > 数据库

c#之Access数据库基本操作

2010-03-20 11:34 435 查看
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

 

 

希望,对大家有用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息