myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   C# Mysql (https://mygully.com/showthread.php?t=2288213)

Dungen Keeper 22.04.11 17:52

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.

Thelvan 22.04.11 18:52

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

germgerm 24.04.11 07:18

Zitat:

Zitat von Dungen Keeper (Beitrag 22183452)
"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"

Dungen Keeper 27.04.11 15:22

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!

Thelvan 27.04.11 16:56

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...]

Dungen Keeper 27.04.11 17:31

Zitat:

Zitat von Thelvan (Beitrag 22204707)
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...]

Vielen dank alle funktioniert super!
Und danke für die sehr schnellen antworten! :T

Dungen Keeper 02.05.11 18:10

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.

Thelvan 02.05.11 18:45

Ich bin mir nicht sicher, aber du musst die " bei der Datumskonvertierung escapen.

Dungen Keeper 03.05.11 14:12

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.

das_kindlein_schreit 03.05.11 14:19

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

Dungen Keeper 03.05.11 14:55

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.

das_kindlein_schreit 03.05.11 15:33

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 und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]) aber ....

Dungen Keeper 03.05.11 16:12

Zitat:

Zitat von das_kindlein_schreit (Beitrag 22229377)
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 und freigeschaltete Mitglieder sichtbar. Jetzt 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?

das_kindlein_schreit 03.05.11 16:22

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

Dungen Keeper 03.05.11 16:45

Zitat:

Zitat von das_kindlein_schreit (Beitrag 22229590)
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!!!!!!!!!!!!:T
Funktioniert alles!

germgerm 03.05.11 19:06

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 (:

Dungen Keeper 10.05.11 10:49

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

Dungen Keeper 10.05.11 10:50

hab vergessen zu sagen das ich das Programm in C# im Visuel Studio 2005 geschrieben habe.

das_kindlein_schreit 10.05.11 16:03

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

Xalir 10.05.11 16:04

Erstelle ein Setupprojekt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.