【发布时间】:2022-11-01 22:21:01
【问题描述】:
我已经在互联网上进行了所有搜索,但我找不到任何方法可以满足我的要求。这是我的代码:
using (MySqlConnection connection = new MySqlConnection(verbindung))
{
connection.Open();
string query = $@"show tables like '%{tbSearch.Text}%'";
MySqlCommand command = new MySqlCommand(query, connection);
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
listR.Add(reader.GetString(0));
btnAccount.Text = listR[0];
btnAccount2.Text = listR[1];
}
}
}
我的期望:
- 如果有多个可用表,则获取两个字符串。
- 我使用下面的代码分别添加值,考虑到当我尝试使用 AutoCompleteMenu 时,它能够分隔每个字符串,例如PrX#0000 和 PxL#0000 不在同一行或值中。
- 在按钮上显示值(我可以自己完成这部分,我只需要知道如何将查询中的值分隔成单独的字符串。
我得到了什么:
错误:btnAccount2.Text = listR1;错误是:
System.ArgumentOutOfRangeException: '索引超出范围。必须是非负数且小于集合的大小。 参数名称:索引'
我猜那是因为字符串本身没有被分成 2
我几乎尝试了所有方法并在互联网上进行了搜索,但仍然无法找到任何方法来做到这一点。
这是我试图从读者那里获得的数据:
这是我在 MessageBox 中显示
GetString(0)的数据时得到的结果。当我做
MessageBox.Show(reader.GetString(0));时,我得到 2 个 MessageBoxes通常在我在文本框中键入表格的第一个字母之后,第二个在我关闭第一个 MessageBox 之后。
【问题讨论】:
-
这个问题似乎与使用 Visual Studio 应用程序无关,因此我删除了该标记。请确保在提问时检查您使用的标签是否正确。
-
所以
while (reader.Read())每行循环一次。您将单个项目添加到listR,但尝试访问第二个项目。为什么是这样?您如何访问仅添加了一项而不是两项的列表的第二项? -
@ProgrammingLlama 问题是,一旦我添加了 GetString(1),就会出现错误,因为它不存在。然而,我在 GetString(0) 中得到了 2 个表名。这就是我想说的。
-
您从表的单列中的单行中获得两个表名?什么?
-
“System.ArgumentException:'您指定了无效的列序号。'”当我使用
listR.Add(reader.GetString(1));