C# 如何使用MySqlDataReader返回多个表?
我想使用mySqlDataReader返回两个表,并将结果加载到两个datatable中C# 如何使用MySqlDataReader返回多个表?,c#,asp.net,mysql,C#,Asp.net,Mysql,我想使用mySqlDataReader返回两个表,并将结果加载到两个datatable中 using (MySqlConnection connMySql = new MySqlConnection(global.g_connString)) { MySqlCommand cmd = connMySql.CreateCommand(); cmd.CommandText = @"
using (MySqlConnection connMySql = new MySqlConnection(global.g_connString))
{
MySqlCommand cmd = connMySql.CreateCommand();
cmd.CommandText = @"
SELECT * FROM table1;
SELECT * FROM table2;
";
connMySql.Open();
using (MySqlDataReader dr = cmd.ExecuteReader())
{
DataTable dt1 = new DataTable();
dt1.Load(dr);
dr.NextResult();
DataTable dt2 = new DataTable();
dt2.Load(dr);
gridView1.DataSource = dt1;
gridView1.DataBind();
gridView2.DataSource = dt2;
gridView2.DataBind();
}
但是,当我运行这个程序时,只填充了一个gridView。我可以这样使用NextResult吗,或者有更好的方法来实现这一点吗
提前感谢,
Ben不要在两次加载调用之间调用dr.NextResult()。读取器已前进到下一个结果集
From MSDN:Load方法使用加载的IDataReader中的第一个结果集,成功完成后,将读取器的位置设置为下一个结果集(如果有)
史蒂文
[编辑]
检查dr.NextResult()的结果还可以更容易地检测代码中到底发生了什么。与使用MySqlDataReader相比,您可以返回如下数据集:
connMySql.Open();
MySqlCommand cmd = new MySqlCommand(SQL, connMySql);
DataSet ds = new DataSet();
MySqlDataAdapter objDataAdapter = new MySqlDataAdapter(cmd);
objDataAdapter.Fill(ds, "reading");
connMySql.Close();
// Each SQL statement result set
// will be in a DataTable in the DataSet
gridView1.DataSource = ds.Tables[0];
gridView1.DataBind();
gridView2.DataSource = ds.Tables[1];
gridView2.DataBind();
希望有帮助。仅供参考,您也可以通过以下方式返回数据集:
DataSet ds = MySql.Data.MySqlClient.MySqlHelper.ExecuteDataset(oConn, SQL);
对于MS-SQL,在connectionString中需要一个标志(MultipleActiveResultSets)。对于MySql提供商来说,有什么类似的事情吗?@Henk该查询不需要MARS;这些表格是按顺序排列的。