2017-09-15 5 views
0

einfügen ich einfach Wert wie diese Mc Access-Spalte Datentyp hinzufügen (Text, numerische Doppel, Text, numerische Prozent) aber ich füge diese Werte (John, "", " “,‚‘) dieser einen Wert Wert nicht diesen Fehler , weil ich nur Namensliste Hilfe mich in biodata.exeWie Nullwerte in MS-Zugriff mit C#

Zusätzliche Informationen

eine erste Chance Ausnahme des Typs‚System.NullReferenceException‘aufgetreten haben eingefügt : Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt.

private void button1_Click(object sender, EventArgs e) 
{ 

     con.Open(); 
     cmd.CommandText = "insert into hhh (name,answerinfloat,subject,avg)VALUES('" + a.Text + "','" + b.Text + "','" + c.Text + "','" + d.Text + "')"; 

     cmd.CommandType = CommandType.Text; 

     cmd.Parameters.AddWithValue("name", a.Text); 
     cmd.Parameters.AddWithValue("answerinfloat", b.Text); 

     cmd.Parameters.AddWithValue("subject", c.Text); 
     cmd.Parameters.AddWithValue("avg", d.Text); 



     int n = cmd.ExecuteNonQuery(); 


     if (n > 0) 
     { 
      MessageBox.Show("Record Submitted", "Congrats"); 
     } 
     else 
      MessageBox.Show("insertion failed"); 

    con.Close(); 

}

+1

Wenn Sie die Spaltennamen im Abfragetext weglassen, müssen Sie Werte für alle in Ihrer Tabelle vorhandenen Spalten angeben. Fügen Sie einfach den Namen der Spalten hinzu und schauen Sie sich an, was ein Sql-Injection-Hack ist. Dein Code ist bereit, gehackt zu werden. – Steve

+1

Ich empfehle Ihnen dringend, sich in [Parametrieren Sie Ihre Abfrage] (https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters (v = vs.110) .aspx) . –

+0

** Warnung: ** Ihr Code ist anfällig für SQL-Injection-Angriffe. Verwenden Sie keine Zeichenfolge concat. Verwenden Sie Parameter. –

Antwort

0

die Spalten Geben Sie in einfügen:

cmd.CommandText = "insert into hhh (col1,col2,col3,col4) VALUES('" + a.Text + "','" + b.Text + "','" + c.Text + "','" + d.Text + "')"; 

Gerade col1 ersetzen, col2 usw. mit den tatsächlichen Namen der Spalten, die Sie wollen in einzufügen. Die Spalten, die Sie weglassen, erhalten keinen Wert und werden NULL (vorausgesetzt, dass sie tatsächlich NULL erlauben)

Wie die anderen kommentiert haben, sollten Sie in die Verwendung parametrisierter Abfragen schauen, anstatt die Werte in die SQL-Anweisung zu verketten. Dadurch kann Ihr Code anfällig für Angriffsangriffe werden.

+0

Ja, ich weiß, aber versuche einfach, null oder leere Zeilen einzufügen, auf die ich klicke Taste –

0

, dass die meisten wahrscheinlich ist, weil du einen Primärschlüssel als @@IDENTITY Spalte haben und somit müssen Sie alle Spalte explizit

insert into hhh(col1, col2, col3, ...) VALUES('" + 

Wieder Code anfällig für SQL Injection spezifizieren. Verwenden Sie die parametrisierte Abfrage und siehe Preventing SQL injection on insert