Autor Beitrag
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 04.10.16 11:54 
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:
ausblenden 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


Zuletzt bearbeitet von erfahrener Neuling am Di 04.10.16 13:17, insgesamt 1-mal bearbeitet
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 04.10.16 13:16 
EDIT 2: Scheinbar liegt es an den Parameter-Platzhaltern, mehr weiß ich auch noch nicht...
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.10.16 13:31 
- Nachträglich durch die Entwickler-Ecke gelöscht -
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: 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:

ausblenden 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..
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.10.16 14:47 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: erfahrener Neuling
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: 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 :)


Zuletzt bearbeitet von erfahrener Neuling am Di 04.10.16 16:29, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.10.16 16:38 
- Nachträglich durch die Entwickler-Ecke gelöscht -