C# insert into Fehler

Horst1945

Cadet 4th Year
Registriert
Okt. 2014
Beiträge
106
Ich habe folgenden String für Select Insert Into........ eingegeben:

Code:
con.Open();
            var strSQL = "Insert Into stammdaten (kdnr, anrede, firma, extra,  ort, strasse, plz, vorwahl, telefon1, telefon, email, web, ansprechpartner1, ansprechpartner2, information, lieferanschrift) values ( '" + txtKdnr.Text + "', '" + txtAnrede.Text + "', " +
              " '" + txtName.Text + "', '" + txtExtra.Text + "', '" + txtStrasse.Text + "', " +
              " '" + txtPlz + "', '" + txtOrt.Text + "' , '" + txtVorwahl1 + ", '" + txtTelefon1.Text + "' ,  " +
              " '" + txtTelefon2 + "', '" + txtFax1 + "', '" + txtEMail + "', '" + txtWeb + "', '" + txtAnsprech1 + "',  " +
              " '" + txtAnsprech2 + "', '" + txtInfo.Text + "', true)";
            SqlCommand cmd = new SqlCommand(strSQL, con);
            cmd.ExecuteNonQuery();
            con.Close();

wenn ich, nachdem ich die Daten eingegeben habe und auf das Button [AddNews] klicke, bekommen ich nach einer gewissen Laufzeit diesen Fehler angezeigt :

Code:
{"Falsche Syntax in der Nähe von 'System'.\r\nDie Marke 'Text' wurde bereits deklariert. Markennamen müssen in einem Abfragebatch oder in einer gespeicherten Prozedur eindeutig sein.\r\nDie Marke 'Text' wurde bereits deklariert. Markennamen müssen in einem Abfragebatch oder in einer gespeicherten Prozedur eindeutig sein.\r\nDie Marke 'Text' wurde bereits deklariert. Markennamen müssen in einem Abfragebatch oder in einer gespeicherten Prozedur eindeutig sein.\r\nDie Marke 'Text' wurde bereits deklariert. Markennamen müssen in einem Abfragebatch oder in einer gespeicherten Prozedur eindeutig sein.\r\nDie Marke 'Text' wurde bereits deklariert. Markennamen müssen in einem Abfragebatch oder in einer gespeicherten Prozedur eindeutig sein.\r\nKein schließendes Anführungszeichen nach der Zeichenfolge ', true)'."}

So sieht der SQL string nach der Ausführung aus:

SQLFehler.jpg
 
Zuerst fällt mir auf, dass die Hälfte deiner Labels nicht mit ihrer Eigenschaft .Text in den String wandert; siehe Screenshot. Dann frage ich mich, ob die Datentypen Deiner Tabelle einen Boolean am Ende und sonst nur Textfelder umfassen. Drittens frage ich mich, warum du beim Aufbau dieses Strings zwei Anführungszeichentypen verwendest.
 
Ja, vor lauter Fehler sehe ich den Urwald nicht mehr!!!!

@Shagrath kannst du mir einmal einen kleinen SQLString zukommen lassen - wie es wirklich aussehen sol!l

zB.



Code:
SOLString = "Insert into Stammdaten (kdnr. anrede, firma, ort, strasse, plz)" +
                    " values ( txtBox1, txtBox2, txtBox3, txtBox4, txtBox5, txtBox6)";
 
Shagrath hat ja schon geschrieben, dass du die Text-Eigenschaft nutzen musst.
Von den Anführungszeichen her sieht alles OK aus.
 
Was lange währt - hat am Ende doch noch etwas Gute!

Ich habe nach langem Hin und Her endlich geschafft, dass die Daten in der Datenbank eingetragen werden!

das einzig was mir fehlt, ist, wie ich das hinbekomme, das die lange Zeile trennen kann:

Code:
 "('" + txtKdnr.Text + "', '" + txtAnrede.Text + "','" + txtName.Text + "', '" + txtExtra.Text + "' , '" + txtOrt.Text + "', '" + txtStrasse.Text + "' , '" + txtPlz.Text + "', '" + txtLand.Text + "', '" + txtAnsprech1.Text + "', '" + txtAnsprech2.Text + "', '" + txtVorwahl1.Text + "', '" + txtTelefon1.Text + "', '" + txtTelefon2.Text + "', '" + txtEMail.Text + "', '" + txtWeb.Text + "', '" + txtSeit.Text + "', '" + counter + "')";

sodass sie eine Zeile im Editor weiterstehen!
 
Einfach ein paar Zeilenumbrüche einfügen. Oder wie ist das gemeint?
 
Darlis schrieb:
Einfach ein paar Zeilenumbrüche einfügen. Oder wie ist das gemeint?

Na dieser Insert String ist sehr lang beim programmieren und er sollte nicht über die ganze Zeile gehen, sondern sollt über 2 bzw. 3 Zeilen im Editor gehen, sodass ich einen Überblick über das, was ich eingegeben habe! und sollte auch funktionieren!
 
Zuletzt bearbeitet:
Dann, wie gesagt, Zeilenumbrüche einfügen.
Ich glaube der in VS integrierte Code-Formatierer mach das auch automatisch für dich, Tastenkürzel müsste STRG+E, D sein. Ist aber auch über das Menüband zu erreichen.
 
Zurück
Oben