myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C# Mysql

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 22.04.11, 17:52   #1
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard 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.
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 22.04.11, 18:52   #2
Thelvan
Erfahrenes Mitglied
 
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
Thelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt Punkte
Standard

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
Thelvan ist offline   Mit Zitat antworten
Ungelesen 24.04.11, 07:18   #3
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 311
Bedankt: 301
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Dungen Keeper Beitrag anzeigen
"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"
germgerm ist offline   Mit Zitat antworten
Ungelesen 27.04.11, 15:22   #4
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

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!
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 27.04.11, 16:56   #5
Thelvan
Erfahrenes Mitglied
 
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
Thelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt Punkte
Standard

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 ]
Thelvan ist offline   Mit Zitat antworten
Ungelesen 27.04.11, 17:31   #6
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Thelvan Beitrag anzeigen
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!
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 02.05.11, 18:10   #7
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

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.
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 02.05.11, 18:45   #8
Thelvan
Erfahrenes Mitglied
 
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
Thelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt Punkte
Standard

Ich bin mir nicht sicher, aber du musst die " bei der Datumskonvertierung escapen.
Thelvan ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 14:12   #9
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

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.
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 14:19   #10
das_kindlein_schreit
Newbie
 
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
das_kindlein_schreit ist noch neu hier! | 0 Respekt Punkte
Standard

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
das_kindlein_schreit ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 14:55   #11
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

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.
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 15:33   #12
das_kindlein_schreit
Newbie
 
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
das_kindlein_schreit ist noch neu hier! | 0 Respekt Punkte
Standard

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 ....
das_kindlein_schreit ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 16:12   #13
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von das_kindlein_schreit Beitrag anzeigen
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?
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 16:22   #14
das_kindlein_schreit
Newbie
 
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
das_kindlein_schreit ist noch neu hier! | 0 Respekt Punkte
Standard

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
das_kindlein_schreit ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 16:45   #15
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von das_kindlein_schreit Beitrag anzeigen
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!
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 03.05.11, 19:06   #16
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 311
Bedankt: 301
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

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 (:
germgerm ist offline   Mit Zitat antworten
Ungelesen 10.05.11, 10:49   #17
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

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 ist offline   Mit Zitat antworten
Ungelesen 10.05.11, 10:50   #18
Dungen Keeper
Anfänger
 
Registriert seit: Jul 2010
Beiträge: 10
Bedankt: 0
Dungen Keeper ist noch neu hier! | 0 Respekt Punkte
Standard

hab vergessen zu sagen das ich das Programm in C# im Visuel Studio 2005 geschrieben habe.
Dungen Keeper ist offline   Mit Zitat antworten
Ungelesen 10.05.11, 16:03   #19
das_kindlein_schreit
Newbie
 
Registriert seit: Mar 2011
Beiträge: 62
Bedankt: 12
das_kindlein_schreit ist noch neu hier! | 0 Respekt Punkte
Standard

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
das_kindlein_schreit ist offline   Mit Zitat antworten
Ungelesen 10.05.11, 16:04   #20
Xalir
Erfahrener Newbie
 
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
Xalir ist noch neu hier! | 0 Respekt Punkte
Standard

Erstelle ein Setupprojekt.
Xalir ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr.


Sitemap

().