簡體   English   中英

通過選擇Auto_Increment值C#實現MySql異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM