我已經在互聯網上進行了所有搜索,但我找不到任何方法可以滿足我的要求。這是我的代碼:
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 = listR 1;錯誤是:
System.ArgumentOutOfRangeException: '索引超出范圍。必須是非負數且小于集合的大小。引數名稱:索引'
我猜那是因為字串本身沒有被分成 2
我幾乎嘗試了所有方法并在互聯網上進行了搜索,但仍然無法找到任何方法來做到這一點。
這是我試圖從讀者那里獲得的資料:
資料
這是我GetString(0)在 MessageBox 中顯示資料時得到的結果。
第一張表
第二張表
當我這樣做時,我得到 2 個訊息框MessageBox.Show(reader.GetString(0));
通常在我在文本框中鍵入表格的第一個字母之后,第二個在我關閉第一個訊息框之后。
uj5u.com熱心網友回復:
如果有多個可用表,您將“獲得兩個字串”。回圈(around reader.Read())將為資料集中的每一行提供一個單獨的字串,即資料庫中的每個表。
您需要將兩個字串的訪問移到回圈之外。回圈第一次運行時,您只有一個字串,因此您還不能同時訪問它們。
listR.Clear();
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
listR.Add(reader.GetString(0));
}
btnAccount.Text = listR[0];
btnAccount2.Text = listR[1];
請注意,如果少于兩個表,此代碼仍然會崩潰,它將忽略前兩個表之后的任何表,并且它將以任意順序選擇前兩個表(因為ORDER BY您的查詢中沒有)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524717.html
標籤:C#mysql
上一篇:MySQL再次選擇結果集
