iB-InformatikBoard.ch - Benutzer helfen Benutzern   IT-Lohnumfrage ¦ MS-CLIP ¦ Google  


     
     
"5.3 Sterne"   

    Diskussionen über Freizeit und Job: Diskussionen über Weiterbildung: Diskussionen über die Computerwelt:  
    Neu hier? Forum für Einsteiger
Wichtige F.A.Q.'s und Regeln
Off Topic
iB-Updates und News
Feedback und Vorschläge
Informatik Job-Forum
Ich suche eine Informatikstelle
Ich biete eine Informatikstelle
Microsoft MCSE Zertifikate
Microsoft Zertifikate Allgemein
CISCO Zertifikate
SIZ-Zertifikaten und Lernhilfen
Zertifikate und Diplome Allgemein
Weiterbildung mit E-Learning
Windows Workstation   Windows Server
Software Allgemein   Linux Software
Programmiersprachen   Webdesign
Security   Internet
Hardware/Netzwerk   Wireless
Pockets, Smartphones, PDA's   Games
Allgemeine Tipps, Bücher und Tools
HowTo    Online Schnäppchen
 
   

Willkommen auf informatikBoard.ch - Benutzer helfen Benutzern
Zurück   iB-Startseite > Informiere dich über die Computerwelt: Geräte, Hard- und Software > Programmiersprachen Allgemein
Willkommen bei InformatikBoard.ch:
Bevor du Schreiben oder Antworten kannst,
musst du dich hier kostenlos Registrieren!

Antwort
 
LinkBack Themen-Optionen
OleDbCommand mit Variabeln?
Alt
  (#1)
Benutzer
 
Status: Offline
Beiträge: 37
Registriert seit: 09.08.2005
Standard OleDbCommand mit Variabeln? - 01.07.2007, 16:55

Saaali zemme..

Ich bin gerade an den Arbeiten für ein Schulpojekt in C#..

.. Wir sind dabei ein PRogramm zu schreiben, das am Ende eine Klassen(Also im Sinne von Schulklassen)-Verwaltung darstellen soll. Das Ziel des Projektes ist es, die Daten in eine Datenbank zu schreiben und da wieder rauszulesen.

Mit dem herauslesen habe ich wirklich keine Probleme funktioniert alles wunderbar. Aber mit dem Einfügen schon.

Code:
        private void btnKadd_Click(object sender, EventArgs e)
        {
            k = new Klasse();
            k.ClearKlasse();
            k.setKlasseName(Convert.ToString(txtKName.Text));
            k.setKlassenArt(Convert.ToString(txtKart.Text));

            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = AllePersonen.getInstanz().getOpenConnection();
            cmd.CommandText="INSERT INTO Klasse (m_ID,m_KName,m_KArt) VALUES (...);

            ListViewRefresh();

        }
Das hier ist der Code den ich bisher habe. Zur Erklärung: Die Daten die reingeschrieben werden sollen werden von den beiden Textfeldern "txtKName" und "txtKArt" eingelesen. die ID wird per Konstruktor vergeben. Die beiden eingelesen strings werden dann zum Abfangen von Fehlerhaften oder nicht gemachten eingaben in der Klasse "Klasse" in die Membervariablen abgefüllt und von dort sollten sie mit der get-Methode wieder eingelesen werden.

Mein Problem ist jetzt, dass ich mit dem "INSERT INTO" kommande nicht feste werte, sondern jedesmal die gerade eingelesenen Daten in die Datenbank einfügen möchte. Das wollte ich eigentli mit Variablen machen. Funktionierte aber nicht wirklicht.

Kann mir jemand eine Lösung bieten? oder zumindest einen Tipp geben?

achja: Die Methode ListviewRefresh() aktualisiert, wie der name schon sagt, die ListView.

Geändert von Stoked (01.07.2007 um 16:58 Uhr).
   
Mit Zitat antworten
OleDbCommand mit Variabeln?
 
Links zum gleichem Thema:
AW: OleDbCommand mit Variabeln?
Alt
  (#2)
Profi Benutzer
 
Benutzerbild von Phil
 
Status: Offline
Beiträge: 678
Registriert seit: 01.06.2004
Ort: Zug
Alter: 25
Standard AW: OleDbCommand mit Variabeln? - 01.07.2007, 22:06

Hi Stoked

Sowie du das gemacht hast, wird's nicht funktionieren. Du hast zwar das SQL Command richtig zugewiesen, du musst es nur noch ausführen. Benutze dazu die Methode ExecuteNonQuery.

gruss
Phil


HF Student (5.Semester)
MCSD .NET / MCPD (Enterprise Application Developer)
MCTS MS SQL Server 2005 (70-431,70-441)
nächster Schritt: MCITP - Database Developer (70-442)
   
Mit Zitat antworten
AW: OleDbCommand mit Variabeln?
Alt
  (#3)
Benutzer
 
Status: Offline
Beiträge: 37
Registriert seit: 09.08.2005
Standard AW: OleDbCommand mit Variabeln? - 01.07.2007, 23:02

hi Phil

joa.. so hatte ich das auch anfangs... dann merkte ich dass es nicht funktionirt und hab alles wieder abgerissen und nochmal vorne angefangen... deshalb ist es jetzt nicht mehr da

Ich bin jetzt zu dem Schluss gekommen, dass dies, so wie ich es hier mache nicht zum gewünschten Ergebnis führt und Arbeite jetzt mit dem OleDbDataAdapter und DataSet.. Mal schauen was dabei raus kommt

Aber trotzdem danke für die Hilfe.
   
Mit Zitat antworten
AW: OleDbCommand mit Variabeln?
Alt
  (#4)
Benutzer
 
Status: Offline
Beiträge: 37
Registriert seit: 09.08.2005
Standard AW: OleDbCommand mit Variabeln? - 02.07.2007, 01:12

Nachdem ich weitere 3h daran gearbeitet habe gebe ich auf.

Ich komme wieder zurück zu diese Lösung hier.

Code:
        private void btnKadd_Click(object sender, EventArgs e)
        {
            k = new Klasse();
            k.ClearKlasse();
            k.setKlasseName(Convert.ToString(txtKName.Text));
            k.setKlassenArt(Convert.ToString(txtKart.Text));

            string t1 = "blubb";
            string t2 = "blöbb";

            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = AllePersonen.getInstanz().getOpenConnection();
            cmd.CommandText = "INSERT INTO Klassen (m_ID, m_KName, m_KArt) VALUES(" + k.getm_KID(); "','" + k.getm_KName(); "','" + k.getm_KArt(); "')";
            try
            {
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fehler:" + ex);
            }
            ListViewRefresh();
        }
So.. sieht es jetzt komplett aus.

Also die jeweils Fett und Rot Markierten Teile verursachen den Compilerfehler CS0201 (Nur assignment-, call-, increment-, und "new object"-Ausdrücke können als Anweisung verwendet werden.).
Nur.. weiss ich nicht so recht was er mir damit sagen will. Und vorallem weiss ich nicht warum es bei der ersten Methode funkioniert und nachher nicht mehr.

Ich dreh noch durch hier...

ahja: :lol: der Blubber und der Blöbber string sind nur da weil ich die mal zum Testen nutzte...

Wenn ich das ganze nur mit Text also Ohne die Methoden mache funktioniert es einwandfrei...
   
Mit Zitat antworten
AW: OleDbCommand mit Variabeln?
Alt
  (#5)
Profi Benutzer
 
Benutzerbild von Phil
 
Status: Offline
Beiträge: 678
Registriert seit: 01.06.2004
Ort: Zug
Alter: 25
Standard AW: OleDbCommand mit Variabeln? - 02.07.2007, 10:15

Code:
cmd.CommandText = "INSERT INTO Klassen (m_ID, m_KName, m_KArt) VALUES(" + k.getm_KID(); "','" + k.getm_KName() + "','" + k.getm_KArt() + "')";
so sollte es funktionieren. Du hattest zu viele Semikolons hintereinander, wie du ja sicherlich weisst wird durch ein Semikolon eine Anweisung eindeutig abgeschlossen.


HF Student (5.Semester)
MCSD .NET / MCPD (Enterprise Application Developer)
MCTS MS SQL Server 2005 (70-431,70-441)
nächster Schritt: MCITP - Database Developer (70-442)
   
Mit Zitat antworten
AW: OleDbCommand mit Variabeln?
Alt
  (#6)
Benutzer
 
Status: Offline
Beiträge: 37
Registriert seit: 09.08.2005
Standard AW: OleDbCommand mit Variabeln? - 02.07.2007, 12:18

danke schonmal werds zuhause ausprobieren.

Aber zu dem Thema mit den Semikolons: Das weiss ich sehr wohl ja... Aber der Compiler meckerte jedesmal wenn ich es Ohne Semikolons machte.. dass da jeweils ein Smikolon fehlt...
   
Mit Zitat antworten
AW: OleDbCommand mit Variabeln?
Alt
  (#7)
Profi Benutzer
 
Benutzerbild von Phil
 
Status: Offline
Beiträge: 678
Registriert seit: 01.06.2004
Ort: Zug
Alter: 25
Standard AW: OleDbCommand mit Variabeln? - 02.07.2007, 12:21

Zitat:
Zitat von Stoked Beitrag anzeigen
danke schonmal werds zuhause ausprobieren.

Aber zu dem Thema mit den Semikolons: Das weiss ich sehr wohl ja... Aber der Compiler meckerte jedesmal wenn ich es Ohne Semikolons machte.. dass da jeweils ein Smikolon fehlt...
Ja das ist klar, aber da CommandText ein String ist, muss du den String mittels + zusammensetzen (siehe Posting oben!).


HF Student (5.Semester)
MCSD .NET / MCPD (Enterprise Application Developer)
MCTS MS SQL Server 2005 (70-431,70-441)
nächster Schritt: MCITP - Database Developer (70-442)
   
Mit Zitat antworten
AW: OleDbCommand mit Variabeln?
Alt
  (#8)
Benutzer
 
Status: Offline
Beiträge: 34
Registriert seit: 16.10.2006
Standard AW: OleDbCommand mit Variabeln? - 04.07.2007, 22:34

Zitat:
Zitat von Phil Beitrag anzeigen
Code:
cmd.CommandText = "INSERT INTO Klassen (m_ID, m_KName, m_KArt) VALUES(" + k.getm_KID(); "','" + k.getm_KName() + "','" + k.getm_KArt() + "')";
so sollte es funktionieren. Du hattest zu viele Semikolons hintereinander, wie du ja sicherlich weisst wird durch ein Semikolon eine Anweisung eindeutig abgeschlossen.
Dies hat aber zwei Proleme:
1. Wenn einer der String selbst ein ' enthält, wird eine exception ausgelöst. Oder in einem noch schlimmeren Fall, manipuliert jemand per SQL-Injection die Daten. Jenach Anwendungsbereich ist dies recht gefährlich.

2.Wenn die Strings leer sind, müsste eigentlich nicht '' eingefügt werden sondern NULL (ohne ' ). Jetzt kommt es aber noch auf die Datenbank an die dahintersteht. Evt. ist es der DB egal, evt. gibt es ein Fehler oder es ist eben doch nicht so wahr was ich nun eben geschrieben habe.

Ich würde es darum etwa so machen:

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = AllePersonen.getInstanz().getOpenConnection();
cmd.CommandText = "INSERT INTO Klassen (m_ID, m_KName, m_KArt) VALUES(?,?,?)";
cmd.Parameters.Add("m_KID", OleDbType.Integer) = k.getm_KID;
cmd.Parameters.Add("m_KName", OleDbType.VarChar) = k.getm_KName;
cmd.Parameters.Add("m_KArt", OleDbType.VarChar) = k.getm_KArt;
cmd.ExecuteNonQuery();


gruss
   
Mit Zitat antworten
Antwort



Unsere iB-Sponsoren:
itrain.ch
klubschule.ch
iB-Sponsor: inside-it.ch
ARP DATACON - PC Onlineshop für Computer, Computerbedarf und Software


Sponsor-Links:




Bitte beachtet das Angebot unserer Sponsoren:
iB-Sponsor: itrain.ch iB-Sponsor: klubschule.ch iB-Sponsor: inside-it.ch GeschenkeNews: Geschenke der besonderen Art


Lesezeichen

« Vorheriges Thema | Nächstes Thema »
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Partnerlinks:
www.Clever-Schenken.ch - Geschenke und Geschenkideen, persönlich uns speziell
www.GeschenkeNews.ch - Geschenke und Geschenkideen
www.BigBellyBank.ch - Die lustige Sparkasse mit AHA-Effekt
www.EcoSphere.ch - Das Mini-Aquarium aus der NASA-Forschung für Zuhause
www.Frauen-Geschenke.ch - Spezielle Geschenke nicht nur für Frauen

 
Seite generiert in 0.129 Sekunden mit 9 Queries.
(100.00% PHP - 0% MySQL)

Copyright ©2008 InformatikBoard.ch
Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Template-Modifikationen durch TMS
vB Skin by vBStyles.com
Search Engine Optimization by vBSEO 3.2.0



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90