关于如何返回一个IDataReader呢?
关于如何返回一个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;
}