Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MySqlDataReader返回多个表?_C#_Asp.net_Mysql - Fatal编程技术网

C# 如何使用MySqlDataReader返回多个表?

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 = @"

我想使用mySqlDataReader返回两个表,并将结果加载到两个datatable中

 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;这些表格是按顺序排列的。