2017-05-15 1 views
0

Ich möchte passen hinzufügen Daten in meine Tabelle mit Visual Studio 2015, aber ich habe diesen Fehler:SQL Server einfügen Fehler: Spaltenname oder Anzahl der übergebenen Werte nicht Tabellendefinition C#

An exception of type "System.Data.SqlClient.SqlException" occurred in System.Data.dll but was not processed in user code 
Column name or number of supplied values does not match table definition. 

Und hier ist mein Code:

protected void btSignup_Click(object sender, EventArgs e) 
{ 
    String CS = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionString1"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     SqlCommand cmd = new SqlCommand("insert into Users values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "')",con); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
} 

this is my table

this is information

+0

Wird die ID automatisch erhöht? Sonst müssen Sie beim Einfügen angeben. Die direkte Verknüpfung von Benutzereingaben ist keine sehr gute Übung. Dies macht Ihren Code anfällig für SQL-Injection. Zum Beispiel kann ein Benutzer einfach den Datenbanknamen 'drop database' eingeben ';' in Ihre Textfelder und die Datenbank wird weg sein. Verwenden Sie stattdessen Stored Procedures –

+0

@Jingg cheng können Sie uns Ihr Tischdesign zeigen? –

Antwort

0

Dies ist Ihr Code:

insert into User 
    values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "')" 

Wenn insert verwenden, sollten Sie immer auch die Spaltennamen. Wenn Sie Werte in die Abfragezeichenfolge eingeben, sollten Sie Parameter verwenden.

Sobald Sie den Code reparieren, wird Ihr Problem verschwinden.

+0

Wenn Sie in alle Felder Ihrer Datenbank einfügen, bei denen es sich nicht um ein automatisches Inkrement handelt, müssen Sie die Spaltennamen nicht angeben. –

+0

Danke für Ihren Rat! –

0
insert into users(param1 , param2 , ...)values(value1 , value 2 , ....) 
+0

** Von Review Queue **: Darf ich Sie bitten, bitte etwas mehr Kontext um Ihre Antwort hinzuzufügen. Nur-Code-Antworten sind schwer zu verstehen. Es wird sowohl dem Fragesteller als auch zukünftigen Lesern helfen, wenn Sie in Ihrem Beitrag weitere Informationen hinzufügen können. – RBT

Verwandte Themen