2016-03-26 8 views
0

ich den Benutzernamen und Benutzer-ID erhalten möchten, aber wenn ich den Befehl ausführen bekomme ich die Ausnahme:MySql Ausnahme von auto_increment Auswahl von Werten C#

Index außerhalb des zulässigen Bereichs war. Muss nicht negativ und kleiner als die Größe der Sammlung \ r \ nParameter Name:. Start“

Die Datenbank hat die Artikel: UserID (AutoIncrement Int (9) (PK)) und Benutzername (Varchar (20))

Code:.

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){ 

Die Ausnahme wird bei "ExecuteReader" geworfen

Queue

"select * from Benutzer Wo UserID = '42' " ist ohne Probleme auf dem Server ausgeführt wird.

Meine Frage ist:

Warum habe ich einen Index Exception aus Reichweite?

Edit:

Ich habe auch versucht, nur die Abfrage

SELECT * FROM Benutzer Wo User

Aber ich die gleiche Ausnahme erhalten.

Ich kann in die Tabelle einfügen und ich kann die letzte einfügen ID aber wenn ich versuche, jede Datenbank mit Select * Von XY bekomme ich die gleiche Ausnahme. Alle Tabellen sind mit innobDB und die alle haben mindestens 1 primären oder Fremdschlüssel.

Edit2:

Wenn ich wählen Sie nur den Benutzernamen der Abfrage funktioniert:

Wählen Sie Benutzernamen Benutzer

Aber wenn ich versuche, die Benutzer-ID

zu erhalten

Wählen Sie Benutzer-ID von Benutzer

Ich bekomme die Ausnahme:

{ "Ziel-Array ist nicht lang genug, um alle Elemente in der Sammlung zu kopieren. Überprüfen Sie den Array-Index und die Länge. "} System.Exception {System.Argument}

+0

Versuchen Sie, den Befehlstyp –

+0

10 zu definieren Nein, ich habe die Typen "text" und "tabledirect" ohne Ergebnis versucht – SeeuD1

+0

Haben Sie versucht, Spalten _explicitly_ in der Abfrage anzugeben? –

Antwort

0

Versuchen 42 ohne die Anführungszeichen

"SELECT * FROM User Where UserID = 42" 
+0

Auch ohne Erfolg – SeeuD1

0

Vielleicht Bearbeiten des Codes kann Ihnen helfen.

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 
} 

Ich hoffe, Sie bekommen die Idee.

+0

Bekam den gleichen Fehler mit der Quere Bearbeitung – SeeuD1

0

Als ein weiser Fehler Spotting-Verfahren empfehle ich zu überprüfen, ob der Fehler auf SQL-Ebene befindet. eine einfache Abfrage ausgeführt

SELECT * FROM `User` 

Bemerken Sie etwas Änderung

Versuchen Sie, die Klausel einfach wo los?

+0

Aber ich bin überzeugt, der Fehler liegt außerhalb des Codes, den Sie gebucht haben. –

+0

Können Sie einige Zeilen nach dem 'if (reader.HasRows) {'? –

+0

Ich habe versucht, aber ich bekomme den gleichen Fehler Ich löschte die if-Anweisung und direkt an die connection.close(), aber die Ausnahme ist bei der Ausführung der Methode kann ich ohne Probleme einfügen und ich kann die letzte einfügen ID – SeeuD1

Verwandte Themen