这是我的代码,只要我在文本框中输入然后单击按钮,就会出现错误:
未处理SqlException,列名或提供的值数与表定义
不匹配
请帮忙
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=XXYZZ\SQLEXPRESS;AttachDbFilename=C:\Users\trist\Documents\Invent.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;");
SqlCommand cmd = new SqlCommand ("Insert into tblLogin values ('"+ txtUsername.Text + '"'+ txtPassword.Text + "')",con);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
if (i > 0)
{
MessageBox.Show("Registered");
}
else
{
MessageBox.Show("HEHE");
}
}
答案 0 :(得分:2)
您的插入SQL有两个列值,必须用逗号分隔,但没有:
// your incorrect SQL query:
SqlCommand cmd = new SqlCommand ("Insert into tblLogin values ('"+ txtUsername.Text + '"'+ txtPassword.Text + "')",con);
但是不应该修复它,你应该开始使用参数化查询,例如。防止SQL注入:
SqlCommand cmd = new SqlCommand ("Insert into tblLogin values (@user, @password)",con);
cmd.Parameters.Add("@User", SqlDbType.VarChar).Value = txtUsername.Text;
cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = txtPassword.Text;
您还应该将using
语句用于实现IDisposable
的所有内容,例如连接和命令。那样你就是f.e.即使出现异常,也要确保连接处于/关闭(重要)。
答案 1 :(得分:-1)
您错过了
之间的逗号(,
)
values ('"+ txtUsername.Text + '"'+ txtPassword.Text + "')",con);
最好指定列名。
INSERT INTO MyTable(Column1, Column2)
VALUES (Value1, Value2), (Value1, Value2)