c# 与 Access数据库 dataset操作

下面以Access数据库为例说明,用C#的DataSet类访问数据库的一些操作方法。

操作涉及的主要C#类有:

DataSet:对应数据库表的一个集合,实际上是数据库表在内存中的一个缓存

DataTable:对应数据库表,是数据库表行的集合

DataRow:对应数据库表行

OleDbConnection:建立数据库连接

OleDbDataAdapter:由数据库生成DataSet,并负责DataSet与数据库的同步

OleDbCommandBuilder:生成更新数据库所需的指令

DataSet、DataTable、DataRow用于数据在缓存中的操作,这上面的操作只有更新到数据库中,修改结果才会被永久保存。OleDbConnection 是用OLEDB方法连接数据库所必需的。OleDbDataAdapter和OleDbCommandBuilder用来生成DataSet,完成数据库更新。与OleDbDataAdapter和OleDbCommandBuilder相对应,SqlDataAdapter和SqlCommandBuilder也可以完成用SQL语言为指令的数据库更新。

假设在D:盘创建了Access数据库,其路径为d:\0DBAcs\account.mdb,数据库中有一张名为kaizhi的数据库表。表结构如下:

 

表名;Kaizhi

字段

Field Name

类型

说明

1

开支ID

kzID

长整型

自动编号

2

开支人

Kzren

文本

50字符

3

开支项目名

kzname

文本

50字符

4

日期

riqi

日期/时间

99-99-99;0掩码

5

开支说明

shuoming

文本

225字符

6

总金额

zonge

单精度

小数点任意;这项开支的总花费

7

数量

shuliang

长整型

8

单价

Danjia

单精度

小数点任意

 

表建好之后:(1)对表中添加新数据(2)查询表中的某个字段。为了实现这两项功能,以下几个问题要考虑:

1准备工作

声明必须的公共变量

建立与数据库的连接,创建DataSet对象

2添加记录

在DataSet对象上添加记录

同步DataSet对象对象与数据库中的数据,这一点很重要,很多人忘记了数据进行同步,结果往往是添加、修改的数据不能保存到数据库中。

3查询数据库表中某记录的某字段;

我们可以将上述功能用一个类DataOper实现,下面是程序设计的主要活动。

声明要用的C#系统类

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Data;

using System.Data.OleDb;

using System.Data.SqlClient;

声明DataOper类中的公共变量

private string DBlocation;

private OleDbConnection dbconn; //数据库连接

private OleDbDataAdapter da;

建立与数据库的连接,这里采用了OLEDB方法:

dbconn = new OleDbConnection(@"provider=microsoft.jet.oledb.4.0; Data Source=d:\0DBAcs\account.mdb");

dbconn.Open();

创建DataSet对象

da = new OleDbDataAdapter(@"select * from kaizhi", dbconn); //引用数据库连接dbconn并依据SQL语句"select * from kaizhi"创建OleDbDataAdapter对象da

DataSet ds = new DataSet(); //创建DataSet对象

da.Fill(ds); //用OleDbDataAdapter对象da填充、更新刚创建的DataSet对象

添加记录并更新数据库

OleDbCommandBuilder cb = new OleDbCommandBuilder(da); // 创建OleDbCommandBuilder对象cb用于更新OleDbDataAdapter对象da的Insert、Delete、Update指令

da.UpdateCommand = cb.GetUpdateCommand(); //更新OleDbDataAdapter对象da的指令

设计人员可以编写自己的更新指令,也可以象上面所写的那样用系统默认的指令。但不管怎样,上面的语句不能缺少,否则程序在运行中会抛出异常System.InvalidOperationException,并提示:Update requires a valid InsertCommand when passed DataRow collection with new rows.

DataRow drx = ds.Tables[0].NewRow(); //创建一条新记录行

drx["kzren"] = "kzren";

drx["kzname"]="kzname";

drx["riqi"]=2008-10-11;

drx["shuoming"]="shuoming";

drx["zonge"] = 12;

drx["shuliang"] = 3;

drx["danjia"] = 4;

ds.Tables[0].Rows.Add(drx); //在表中追加记录

da.Update(ds); //更新数据库

要查询引用某记录的某字段,直接按如下的方法引用就可以了。

String kx=ds.Tables[0].Rows[0]["kzren"].ToString()


猜你喜欢

转载自blog.csdn.net/wzk456/article/details/80664763
今日推荐