Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# 单个或多个MySqlDataReaders_C#_Mysql_Sql - Fatal编程技术网

C# 单个或多个MySqlDataReaders

C# 单个或多个MySqlDataReaders,c#,mysql,sql,C#,Mysql,Sql,我有两个数据库,一个是本地的,另一个是远程的。我可以使用MySqlDataReader从本地获取数据,但即使连接成功,也无法从远程获取数据。我试图创建另一个MySqlDataReader对象,但再次失败。这是我的密码: using(MySqlCommand cmd2 = connL.CreateCommand()) { using (DataTable dt = new DataTable()) {

我有两个数据库,一个是本地的,另一个是远程的。我可以使用MySqlDataReader从本地获取数据,但即使连接成功,也无法从远程获取数据。我试图创建另一个MySqlDataReader对象,但再次失败。这是我的密码:

        using(MySqlCommand cmd2 = connL.CreateCommand())
        {
            using (DataTable dt = new DataTable())
            {

                cmd2.CommandType = CommandType.Text;
                cmd2.CommandText = "SELECT userid FROM users";

                for (int i = 0; i < count; i++)
                {
                    dr = cmd2.ExecuteReader();
                    dr.Read();
                    string userid = dr[i].ToString();
                    dr.Close();
                    MessageBox.Show(userid);
                    //here, I can see the id

                    MySqlCommand cmd3 = connR.CreateCommand();
                    cmd3.CommandType = CommandType.Text;
                    cmd3.CommandText = "SELECT * FROM users WHERE userid = \"" + userid + "\"";
                    dr = cmd3.ExecuteReader();
                    dr.Read();

                    if (!dr[0].Equals("")) //! but in this line it says:
                    //Invalid attempt to access a field before calling Read()
                    {
                        MessageBox.Show(dr[0].ToString());
                    }
                        dr.Close();

                }



            }
        }

我找不到解决此错误的方法:,顺便说一句,我是c新手,如果它是重复的,很抱歉。

您是否确实检查过您的DataReader是否包含任何数据? 您收到的越界异常表示您正试图访问一个没有所需密钥的数组

我已经测试了你的代码,它正常工作。尝试替换此:

cmd3.CommandText = "SELECT * FROM users WHERE userid = \"" + userid + "\"";
为此:

cmd3.CommandText = "SELECT * FROM users";
只是看看你是否收到任何数据

您还可以在DataReader.Read周围使用一段时间,以防止任何越界异常

while (dr.Read())
{
    MessageBox.Show(dr.ToString());
}

您应该像这样检查Read的结果:if dr.Read{},并查看参数化查询和usingstatements。我尝试这样检查:if dr.Read{MessageBox.Showdr==null.ToString;}但它说超出界限:为什么要执行dr==null?因为我认为IndexOutfrange异常来自dr[0]==null,或者将其更改为dr==null:d请使用调试器检查您的dr是否包含任何数据谢谢您的帮助,我发现了我的问题,这与我查看错误的数据数组有关。