2009-06-06 3 views
14

Ich versuche, eine Abfrage auszuführen, die derzeit in phpMyAdmin funktioniert, aber es funktioniert nicht, wenn Sie es in .NET mit dem MySqlAdapter ausführen. Dies ist die SQL-Anweisung.Ist es möglich, eine MySql benutzerdefinierte Variable in einem .NET MySqlCommand zu verwenden?

Es @rownum verwendet, um jede einzelne Zeile zu nummerieren, die von meiner inneren Skalarabfrage zurückgegeben wird. Aber wenn ich es in .NET verwende, nehme ich an, dass das @ownum ein Parameter ist und eine Ausnahme auslöst, weil ich es nicht definiert habe.

using (var sqlConnection = new MySqlConnection(SOURCE_CONNECTION)) 
{ 
    sqlConnection.Open(); 

    MySqlDataAdapter sqlAdapter = new MySqlDataAdapter(SqlStatement, sqlConnection); 

    DataTable table = new DataTable(); 
    sqlAdapter.Fill(table); 
    sqlConnection.Close(); 

    return table; 
} 

Irgendwelche Ideen, wie ich dieses Problem umgehen könnte? Oder Möglichkeiten für mich, eine Zeilennummer zu bekommen?

Antwort

1

Sie könnten eine Spalte zu Ihrer Tabelle namens rownum hinzufügen, füllen Sie es dann Werte mit:

table.Columns.Add("rownum"); 
for (int i=0; i < table.Rows.Count; i++) 
{ 
table.Rows[i]["rownum"] = i; 
} 
+0

Ich bin ehrlich, ich würde scheuen, manuell die Zahl auf diese Weise generieren, aber ich könnte dies als eine mögliche Lösung sehen. Ich denke, ich muss wirklich überdenken, wie ich die Daten herausziehe. –

3

Welche Version des Anbieters MySQL-Daten verwenden Sie? Möglicherweise müssen Sie aktualisieren.

Ich fand dies in der 5.0 documentation:

Frühere Versionen des Anbieters verwendet, um das '@' Symbol Parameter in SQL zu markieren. Dies ist nicht mit den MySQL-Benutzervariablen kompatibel, daher verwendet der Provider jetzt das '?' Symbol zum Lokalisieren von Parametern in SQL. Um älteren Code zu unterstützen, können Sie in Ihrer Verbindungszeichenfolge "alte Syntax = ja" festlegen. Wenn Sie dies tun, beachten Sie bitte, dass eine Ausnahme nicht ausgelöst wird, wenn Sie einen Parameter nicht definieren, den Sie in Ihrem SQL verwenden möchten.

+0

Danke für das Update. Das habe ich auch in der Dokumentation gesehen. Es ist eine ziemlich neue Version seit es vor ein paar Wochen heruntergeladen wurde. Ich habe die alte Syntax = yes ohne Verhaltensänderung ausprobiert. –

+0

Link scheint jetzt tot zu sein. – Bugs

Verwandte Themen