[英]MySql Exception by Selecting Auto_Increment Values C#
我想獲取用戶名和用戶名,但是當我執行命令時,出現異常:
索引超出范圍。 必須為非負數,並且小於集合的大小。\\ r \\ n參數名稱:startIndex“
該數據庫具有以下各項:UserID(AutoIncrement Int(9)(PK))和UserName(Varchar(20))
碼:
using (MySqlConnection connection = new MySqlConnection(DBConnection.ConnectionString))
{
connection.Open();
MySqlCommand getUser = new MySqlCommand("SELECT * FROM User Where UserID = '42'", connection);
MySqlDataReader reader = getUser.ExecuteReader();
if (reader.HasRows){
在“ ExecuteReader”處引發異常。
隊列
正在執行“從用戶ID = '42'的用戶中選擇*”,而服務器上沒有任何問題。
我的問題是:
為什么我的索引超出范圍異常?
編輯:
我也只嘗試查詢
選擇*從用戶其中
User
但是我也有同樣的例外。
我可以插入表中,也可以獲取最后插入ID,但是當我嘗試使用Select * From XY對每個數據庫進行操作時,會得到相同的異常。 所有表都帶有innobDB,並且所有表至少具有1個主鍵或外鍵。
編輯2:
如果僅選擇用戶名,則查詢有效:
從用戶中選擇用戶名
但是當我嘗試獲取用戶ID時
從用戶中選擇用戶ID
我得到異常:
{“目標數組不足以復制集合中的所有項目。檢查數組索引和長度。”} System.Exception {System.ArgumentException}
嘗試42不加引號
"SELECT * FROM User Where UserID = 42"
也許您對代碼的這種編輯可以為您提供幫助。
using (MySqlConnection connection = new MySqlConnection(DBConnection.ConnectionString))
{
connection.Open();
MySqlCommand getUser = new MySqlCommand("SELECT * FROM `User` WHERE `User`.`UserID` = 42", connection);
MySqlDataReader reader = getUser.ExecuteReader();
//rest of your code
}
希望您能明白。
作為明智的錯誤發現程序,我建議檢查錯誤是否位於sql級別。
嘗試簡單地執行普通查詢來擺脫where子句
SELECT * FROM `User`
你注意到一些變化嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.