关于如何返回一个IDataReader呢?

baiwei 2006-08-16 01:57:56
关于如何返回一个IDataReader呢?
在一个名为CSK2的程序中,有两个这样的方法,如下。
/// <summary>
/// This is a simple function to use with lookup tables
/// that are not represented with a business object.
/// </summary>
/// <param name="tableName">Name of the table to query. All results will be returned</param>
/// <returns>IDataReader</returns>
public static IDataReader GetList(string tableName)
{
IDataReader rdr=null;
DbCommand dbCommand = null;
Database db = Helper.GetDB();
try
{
using (dbCommand = db.GetSqlStringCommand("SELECT * FROM "+tableName))
{
rdr = db.ExecuteReader(dbCommand);
}
}
finally
{
dbCommand.Dispose();
}
return rdr;
}

public static void LoadListItems(System.Web.UI.WebControls.ListItemCollection list, IDataReader rdr, string

textField, string valField, string selectedValue, bool closeReader) {
ListItem l;
string sText = "";
string sVal = "";
list.Clear();

while (rdr.Read()) {

sText = rdr[textField].ToString();
sVal = rdr[valField].ToString();

l = new ListItem(sText, sVal);
if (selectedValue != string.Empty) {
if (selectedValue.ToLower() == sVal.ToLower())
l.Selected = true;
}
list.Add(l);
}
if (closeReader)
rdr.Close();
}

因为不明白 Database db = Helper.GetDB();与using (dbCommand = db.GetSqlStringCommand("SELECT * FROM "+tableName))是什么意思,

我把上面的GetList方法改成下面这个样子,但是不能通过。上面的db.ExecuteReader(dbCommand)返回的是IDataReader,而我写的返回的确不

是,那位高手帮我看看,如何解决小弟在此谢谢了。
public static IDataReader GetList(string tableName)
{
IDataReader rdr = null;

string strSQL = "SELECT * FROM " + tableName;

OleDbConnection myCn = new OleDbConnection(strConn);
OleDbCommand myCmd = new OleDbCommand(strSQL,myCn);

try
{
myCn.Open();
rdr = myCmd.ExecuteReader();
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
finally
{
myCmd.Dispose();
myCn.Close();
}
return rdr;
}
...全文
631 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scow 2006-08-16
  • 打赏
  • 举报
回复
rdr = (IDataReader)myCmd.ExecuteReader();
显式转换一下类型
baiwei 2006-08-16
  • 打赏
  • 举报
回复
to Edifier0709(腦袋重構中.....)
是的,
就是想在getlist中,实现包含db类的功能。谢谢。
resen_tu 2006-08-16
  • 打赏
  • 举报
回复
你那个是enterprise library的数据访问块~~而这个是适用于SQL数据库,并不适于你的ACCESS这种OLEDB的数据库呀
Edifier0709 2006-08-16
  • 打赏
  • 举报
回复
上面的 Database db = Helper.GetDB();db.ExecuteReader是别人自己写的数据访问的类

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧