您的位置:首页 > 其它

使用DataAdapter对象获取数据

2008-08-19 23:24 399 查看
DataAdapter类用作ado.net对象模型中已连接和未连接部分的桥梁。可以使用DataAdapter从数据库中获取数据,并将其存储在DataSet中。也可以取得缓存在DataSet中的更新,并将他们提交给数据库。DataAdapter是为脱机数据而设计的。

1、创建DataAdapter

在创建DataAdapter时,通常希望将SelectCommand属性设置为一个有效的Command对象。

string strCon, strSql;

strCon = @"provider=microsoft.jet.oledb.4.0;data source=d:\st.mdb";

strSql = "select * from 学生";

OleDbConnection con = new OleDbConnection(strCon);

OleDbCommand cmd = new OleDbCommand(strSql, con);

OleDbDataAdapter da = new OleDbDataAdapter();

da.SelectCommand = cmd;

2、DataAdapter构造函数

DataAdapter拥有3个可用于简化DataAdapter类创建过程的构造函数

【1】 string strCon, strSql;

strCon = @"provider=microsoft.jet.oledb.4.0;data source=d:\st.mdb";

strSql = "select * from 学生";

OleDbDataAdapter da = new OleDbDataAdapter(strSql,strCon);

这种方法有一个潜在的缺陷,假定正在应用程序中使用一系列的DataAdapter对象。以这种方式创建的DataAdapter对象将为每个DataAdapter创建一个新的Connection对象。可以通过使用一个查询字符串和connection对象为参数的DataAdapter构造函数来确保DataAdapter使用的都是同一个Connection对象。以下代码创建的两个DataAdapter对象使用的是同一个Connection对象。

【2】

string strCon, strSql1,strSql2;

strCon = @"provider=microsoft.jet.oledb.4.0;data source=d:\st.mdb";

strSql1 = "select * from 学生";

strSql2="select * from 教师";

OleDbConnection cn = new OleDbConnection(strCon);

OleDbDataAdapter da1 = new OleDbDataAdapter(strSql1, cn);

OleDbDataAdapter da2 = new OleDbDataAdapter(strSql2, cn);

DataAdapter 还提供一种以Command对象为参数的第三构造函数,如果已经创建了一个Command对象,并希望创建一个使用Command对象来填充DataSet的DataAdapter。可以使用如下代码。

【3】

string strCon, strSql1,strSql2;

strCon = @"provider=microsoft.jet.oledb.4.0;data source=d:\st.mdb";

strSql1 = "select * from 学生";

strSql2="select * from 教师";

OleDbConnection cn = new OleDbConnection(strCon);

OleDbCommand cmd = new OleDbCommand(strSql1, cn);

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

3、从查询中获取结果

现在已经了解了如何创建DataAdapter的几种方式,下面看下如何使用一个DataAdapter对象将查询结果存储在DataSet中。

(1)、使用Fill方法

调用fill方法会执行存储在SelectComand属性中的查询,并将结果存储在DataSet中。

string strCon, strSql1,strSql2;

strCon = @"provider=microsoft.jet.oledb.4.0;data source=d:\st.mdb";

strSql1 = "select * from 学生";

OleDbDataAdapter da = new OleDbDataAdapter(strSql1, strCon);

DataSet ds = new DataSet();

da.Fill(ds);

foreach (DataRow row in ds.Tables[0].Rows)

{

Console.Write("{0}---{1}",row["姓名"],row["性别"]);

}

(2)使用重载的fill方法

指明填充的表名,

da2.Fill(ds,"教师");

在调用fill方法时还可以制定DataTable而不是DataSet.

da2.Fill(DataTable)

如下:

string strCon, strSql1,strSql2;

strCon = @"provider=microsoft.jet.oledb.4.0;data source=d:\st.mdb";

strSql1 = "select * from 学生";

strSql2 = "select * from 教师";

OleDbDataAdapter da = new OleDbDataAdapter(strSql1, strCon);

DataTable tb1 = new DataTable();

da.Fill(tb1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: