让我先告诉你我现在正在做什么以及我面临的问题。
现在我使用SqlDataReader
从数据库中获取数据,我的函数看起来像
public List<TOPIC_REPORT> gettopicreports()
{
query = "SELECT * FROM [Topic Reports]";
List<TOPIC_REPORT> rpl = new List<TOPIC_REPORT>();
try
{
con.Open();
com = new SqlCommand(query, con);
sdr = com.ExecuteReader();
while (sdr.Read())
{
rt = new TOPIC_REPORT();
rt.ContentId = sdr.GetString(0);
rt.TimesReported = sdr.GetInt64(1);
rt.IsBanned = sdr.GetInt32(2);
rpl.Add(rt);
}
con.Close();
return rpl;
}
catch (Exception e)
{
con.Close();
throw e;
}
}
上述代码的问题
Above Problem解决方案使用SqlDataAdapter。
public DataSet getdata()
{
com.CommandText = "GetMasterPageData";
com.Connection = con;
com.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataAdapter adapter = new SqlDataAdapter(com);
DataSet ds = new DataSet();
adapter.Fill(ds);
con.Close();
return ds;
}
这解决了上述问题,但
建议我如何解决上述问题。
答案 0 :(得分:0)
您可以通过组合所有查询来更改查询以返回多个结果集。例如:
query = "SELECT * FROM [Topic Reports]; SELECT * FROM [Other table]";
使用SqlDataReader.Read迭代第一个结果集后,使用SqlDataReader.NextResultSet()方法获取第二个结果,然后使用SqlDataReader.Read迭代第二个结果。
作为旁注,如果你这样做,那么你将不得不想办法从你的方法中返回两种类型对象的集合。最好只使用1方法来获取对象A的集合,并使用不同的方法来获取对象B的集合。