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); |
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
@
Frü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 -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!