Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
22.04.11, 17:52
|
#1
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
C# Mysql
Hallo
Kann mir vielleicht jemand sagen was ich bei dem Befehl falsch mache.
Ich hab eine Tabelle
Kunden:
KundenNr
Vorname
Nachname
und dann eine Tabelle
Filme:
Filmnummer
Filmnamen
KundenNr
"SELECT f.KundenNr,k.KundenNr,Vorname,Nachname,Filmname FROM kunden k,filme f WHERE k.KundenNr = f.KundenNr"
Wenn ich das so mache kommt eine Fehlermeldung.
Danke schon im vorhinein.
|
|
|
22.04.11, 18:52
|
#2
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
|
Wenn eine Fehlermeldung kommt, solltest du die Lösung dafür finden.
Wenn du die Fehlermeldung verschweigst, kann man dir eher schlecht helfen.
Bitte gewöhn dir an möglichst viele Details zu nennen, lieber zuviel als zuwenig.
Ich kann jetzt nur schätzen und sagen, das bei "Filmname" im SQL-Befehl ein "n" am Ende fehlt
|
|
|
24.04.11, 07:18
|
#3
|
bla
Registriert seit: Mar 2010
Beiträge: 311
Bedankt: 301
|
Zitat:
Zitat von Dungen Keeper
"SELECT f.KundenNr,k.KundenNr,Vorname,Nachname,Filmname FROM kunden k,filme f WHERE k.KundenNr = f.KundenNr"
|
Die Fehlermeldung wäre tatsächlich hilfreich.
Viell.:
"SELECT f.KundenNr,k.KundenNr, k.Vorname, k.Nachname, f.Filmname FROM kunden k,filme f WHERE k.KundenNr = f.KundenNr"
|
|
|
27.04.11, 15:22
|
#4
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
Hallo
danke für eure schnelle antwort, Ihr habts recht gehabt war ein blöder Fehler hab einen Buchstaben vergessen!
Aber jetzt steh ich vor dem nächsten Problem:
Ich würde gerne in einer Textbox eine Kundennummer eingeben und dann soll mir in einem dataGridView die Kundennummer, Vorname, Nachname und der Filmname angezeigt werden.
die tabelen sind wieder die selben wie oben:
Kunden:
KundenNr
Vorname
Nachname
und dann eine Tabelle
Filme:
Filmnummer
Filmnamen
KundenNr
Das war mein Lösungsvorschlag:
DataTable data = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter("SELECT f.KundenNr,Vorname,Nachname,Filmname FROM kunden k,filme f WHERE f.KundenNr = "+tbKundenNr.Text.ToString()+"", Datenbank.connection);
MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
da.Fill(data);
dataGridView1.DataSource = data;
tbKundenNr= die Textbox wo ich die Kundennummer eingebe.
Das Problem ist das er mir alle Kunden Vornamen und Nachnamen ausgibt.
Filmname und Kundennummer wird richtig ausgegeben.
Danke schonmal im vorhinein!
|
|
|
27.04.11, 16:56
|
#5
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
|
Da es 2 Tabellen sind musst du die Kunden.KundenNr auf die Filme.KundenNR joinen.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
|
|
|
27.04.11, 17:31
|
#6
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
Zitat:
Zitat von Thelvan
Da es 2 Tabellen sind musst du die Kunden.KundenNr auf die Filme.KundenNR joinen.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
|
Vielen dank alle funktioniert super!
Und danke für die sehr schnellen antworten!
|
|
|
02.05.11, 18:10
|
#7
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
Hallo ich schon wieder
Has schon wieder ein Problem.
Also das ist mein Code:
public bool RueckgabeDatumSpeichern(string kundenNr)
{
RückgabeDatum = DateTime.Now;
string myInsertQuery = "INSERT INTO verleih (bisDatum) Values('" + RückgabeDatum.ToString("yyyy-MM-dd") + "') WHERE KundenNr ='" +kundenNr.ToString() + "' ";
myCommand = new MySqlCommand(myInsertQuery,Datenbank.connection);
try
{
myCommand.ExecuteNonQuery();
}
catch
{
return false;
}
return true;
}
also im catch steht immer dieser Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE KundenNr ='13'' at line 1
meine Tabelle:
verleih:
VerleihNr
KundenNr
FilmNr
vonDatum
bisDatum
ich such schon sicher 2 stunden den Fehler aber ich seh im nicht!
Bitte um hilfe !
Danke schonmal im vorraus.
|
|
|
02.05.11, 18:45
|
#8
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
|
Ich bin mir nicht sicher, aber du musst die " bei der Datumskonvertierung escapen.
|
|
|
03.05.11, 14:12
|
#9
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
Hallo das problem ist ja das alles funktioniert wenn ich nur
"INSERT INTO verleih (bisDatum) Values('" + RückgabeDatum.ToString("yyyy-MM-dd") + "'");
ohne
WHERE KundenNr ='" +kundenNr.ToString() + "' schreibe.
mit WHERE KundenNr ='" +kundenNr.ToString() + "' kommt immer der Fehler.
|
|
|
03.05.11, 14:19
|
#10
|
Newbie
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
|
Also, String-Konkatenation macht man definitiv nicht inline, das ist Spaghettiecode ergo unübersichtlich, fehleranfällig und einfach nur unsinnig - die Escaping-Orgien die daraus resultieren sind fürchterlich.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] wird dir helfen, deine Konstrukte zu entwirren - wenn man die Parameter schön der Reihe nach übergibt und im String selbst eindeutige Platzhalter hat (bei c# ist das sogar besser als bei c) dann is das ne runde Sache und man macht keine Fehler.
Vorteil davon : du musst rein garnichts escapen, alles ist übersichtlich und leicht änderbar.
Wende die Methode mal an und melde dich wieder falls es immernoch nicht geht - was ich für unwahrscheinlich erachte
|
|
|
03.05.11, 14:55
|
#11
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
Könntest du mir vielleicht den Code aufschreiben wenn es nicht zuviel verlangt ist weil ich versteh nicht genau was ich jetzt machen soll bin noch anfänger. Im normalfall würd ich mir das ja anschauen bis es funktioniert aber ich steh unter zeitdruck mit der abgabe.
Wäre nett wenn es möglich ist.
|
|
|
03.05.11, 15:33
|
#12
|
Newbie
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
|
weil du so nett gefragt hast:
Code:
string sqlstring = String.Format("INSERT INTO verleih (bisDatum) Values('{0}') WHERE KundenNr = '{1}'", RückgabeDatum.ToString("yyyy-MM-dd"), kundenNr.ToString());
so in etwa sollte das funktioniern - es geht noch deutlich besser (mittels [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]) aber ....
|
|
|
03.05.11, 16:12
|
#13
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
Zitat:
Zitat von das_kindlein_schreit
weil du so nett gefragt hast:
Code:
string sqlstring = String.Format("INSERT INTO verleih (bisDatum) Values('{0}') WHERE KundenNr = '{1}'", RückgabeDatum.ToString("yyyy-MM-dd"), kundenNr.ToString());
so in etwa sollte das funktioniern - es geht noch deutlich besser (mittels [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]) aber ....
|
Danke! funktioniert aber leider noch immer nicht, immer noch der selbe Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE KundenNr = '13'' at line 1
Vielleicht noch eine idee?
|
|
|
03.05.11, 16:22
|
#14
|
Newbie
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
|
ich merke gerade dass das INSERT-Statement kein WHERE kennt. Höchstwahrscheinlich musst du UPDATE nehmen, dann gehts auch mit WHERE.
Is ja auch logisch : INSERT erzeugt ne neue Zeile, UPDATE verändert bestehende und genau das willst du vermutlich machen
|
|
|
03.05.11, 16:45
|
#15
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
Zitat:
Zitat von das_kindlein_schreit
ich merke gerade dass das INSERT-Statement kein WHERE kennt. Höchstwahrscheinlich musst du UPDATE nehmen, dann gehts auch mit WHERE.
Is ja auch logisch : INSERT erzeugt ne neue Zeile, UPDATE verändert bestehende und genau das willst du vermutlich machen
|
also da hätt ich auch selber daruf kommen können. So ein blöder Fehler!
Danke für deine Hilfe!!!!!!!!!!!!
Funktioniert alles!
|
|
|
03.05.11, 19:06
|
#16
|
bla
Registriert seit: Mar 2010
Beiträge: 311
Bedankt: 301
|
Wenn ich SQL-Statements für C++ oder C# brauche, probiere ich diese vorher immer im MS-SQL-Studio oder TOAD aus. Auch die ganz einfachen.
Das mit dem INSERT WHERE ist mir beim Drüberlesen auch nicht aufgefallen (:
|
|
|
10.05.11, 10:49
|
#17
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
hallo
ich hab ein problem und zwar hab ich jetzt mein Programm fertig geschrieben und würde jetzt gerne ein Setup erstellen. Ich habe das Programm mit einer MySQL Datenbank gemacht. Ich habe im Programm den Mysql Connecter verwendet. Jetzt das Problem:
Ich hab jetzt herausgefunden das ich in das Setup den Mysql Connecter auch hinein tun muss. Jedoch weiß ich nicht wie das funktioniert das man halt wenn man das Programm an einem anderen Pc installiert, dass zuerst geprüft wird ob der Mysql Connecter installiert wurde und wenn er nicht installiert wurde das er installiert wird.
Ich hoffe ihr verstehts was ich meine.
Bitte um Hilfe
mfg
|
|
|
10.05.11, 10:50
|
#18
|
Anfänger
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
|
hab vergessen zu sagen das ich das Programm in C# im Visuel Studio 2005 geschrieben habe.
|
|
|
10.05.11, 16:03
|
#19
|
Newbie
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
|
ganz einfach - die Library, die du zusätzlich nutzt (der Connector) mit in die Installation reinpacken und beim Installieren einfach ins Installationsverzeichnis reinschieben, das System sucht die entsprechende Datei automatisch zuerst im aktuellen Verzeichnis (und danach in %SYSTEMROOT%).
Meist sind es einfache .dll - Dateien, hin und wieder aber auch .lib oder gar komplette, ausführbare Dateien
|
|
|
10.05.11, 16:04
|
#20
|
Erfahrener Newbie
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
|
Erstelle ein Setupprojekt.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr.
().
|