Entwickler-Ecke

Alle Sprachen - Alle Plattformen - SQL Syntax Error


erfahrener Neuling - Di 04.10.16 11:54
Titel: SQL Syntax Error
Hallo Leute,

ich versuche gerade in 'nem C# Programm eine MySQL Abfrage zu machen. Leider kenne ich die MySQL-Syntax nicht so sehr.

Die Abfrage lautet gekürzt:

SQL-Anweisung
1:
2:
3:
"SELECT user_id,status_id,created,lastupdate " +
"FROM 'myTable' " +
"WHERE created>@0 AND lastupdate>@1;"

Dazu folgende Fehlermeldung:
Zitat:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE created>'2000-01-01 00:00:00' AND lastupdate>'2015-10-01 00:00:00'' at line 1

created und lastupdate sind in der Tabelle beide DateTime's.
Ansonsten habe ich schon mehrere kleine Änderungen probiert, jedoch immer die gleiche Fehlermeldung.

Hoffe ihr könnt mir helfen

MfG
Julian

EDIT: Also die Abfrage scheint richtig zu sein, da ich im phpMyAdmin-SQL-Abfrage-Editor die richtigen Ergebnisse anzeigen lassen konnte. Ich denke es liegt am DataProvider im Zusammenhang mit MariaDB


erfahrener Neuling - Di 04.10.16 13:16

EDIT 2: Scheinbar liegt es an den Parameter-Platzhaltern, mehr weiß ich auch noch nicht...


Nersgatt - Di 04.10.16 13:28

Auch wenn ich mich mit C# nicht auskenne, ist sicher der Code, mit dem die Parameter befüllt werden, interessant.
Welchen Datentyp haben "created" und "lastupdate"?

Das @-Zeichen wird in MySql eigentlich für benutzerdefinierte Variablen verwendet. Ich könnte mir vorstellen, dass das hier Probleme bereitet.


Delete - Di 04.10.16 13:31

- Nachträglich durch die Entwickler-Ecke gelöscht -


erfahrener Neuling - Di 04.10.16 14:05

Danke erstmal für die Hinweise!

@Frühlingsrolle
So war eigntl auch mein Standardvorgehen, nur muss ich diesmal auf eine bereits existierende Klasse zugreifen, die nur folgende Methode zulässt:


C#-Quelltext
1:
DataTable dtResult = base.Databases["MyDatabase"].ExecuteDataTable(sqlQuery, param1, param2);  // je nachdem, wieviele Parameter in der SQL-Abfrage angegeben sind                    

An den Quelltext der Klasse komm ich leider im Moment nicht heran, aber wie ihr schon vermutet habt, wird dort vermutlich das Problem liegen..


Delete - Di 04.10.16 14:47

- Nachträglich durch die Entwickler-Ecke gelöscht -


erfahrener Neuling - Di 04.10.16 15:31

Zitat:
string s = "0";
string ss = "1";

string sql = "SELECT user_id, status_id, created, lastupdate FROM myTable WHERE created > " + s + " AND lastupdate > " + ss + ";";

Ja stimmt, so geht es natürlich auch :)


Ralf Jansen - Di 04.10.16 15:59

@user profile iconFrühlingsrolle DataTable.Select ist eine reine lokale Angelegenheit. Gefiltert wird nur in der DataTable und geht nicht an die Datenbank (Eine DataTable kennt die dahinterliegende Datenbank ja auch gar nicht).


Auf echte Parameter sollte man nicht verzichten. a.) wegen Sicherheitsproblemen und b.) wegen Formatproblemen. Gerade wie hier wo es scheinbar um Datetimespalten geht.


Delete - Di 04.10.16 16:38

- Nachträglich durch die Entwickler-Ecke gelöscht -