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.youkuaiyun.com/kkfdsa132/archive/2010/03/19/5396530.aspx
希望,对大家有用!