gpt4 book ai didi

c# - 单个或多个 MySqlDataReader

转载 作者:行者123 更新时间:2023-11-29 21:56:24 25 4
gpt4 key购买 nike

我有两个数据库,一个是本地的,另一个是远程的。我可以使用 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 是否包含任何数据?您收到的越界异常表明您正在尝试访问一个没有您要求的 key 的数组。

我已经测试了您的代码,它可以正常工作。尝试替换这个:

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

这样:

cmd3.CommandText = "SELECT * FROM users";

只是为了看看您是否收到任何数据。

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

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

关于c# - 单个或多个 MySqlDataReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33118997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com