![]() |
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. |
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 |
Zitat:
Viell.: "SELECT f.KundenNr,k.KundenNr,k.Vorname,k.Nachname,f.Filmname FROM kunden k,filme f WHERE k.KundenNr = f.KundenNr" |
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! |
Da es 2 Tabellen sind musst du die Kunden.KundenNr auf die Filme.KundenNR joinen.
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] |
Zitat:
Und danke für die sehr schnellen antworten! :T |
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. |
Ich bin mir nicht sicher, aber du musst die " bei der Datumskonvertierung escapen.
|
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. |
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 und freigeschaltete Mitglieder sichtbar. Jetzt 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 |
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. |
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()); |
Zitat:
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? |
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 |
Zitat:
Danke für deine Hilfe!!!!!!!!!!!!:T Funktioniert alles! |
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 (: |
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 |
hab vergessen zu sagen das ich das Programm in C# im Visuel Studio 2005 geschrieben habe.
|
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 |
Erstelle ein Setupprojekt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.