无法将表单数据插入sql数据库

时间:2017-01-24 07:36:28

标签: c# sql sql-server ado.net

我有简单的表单,其中包含users nameemailcity。我创建了一个数据库和一个包含字段idnameemailcity的表格。当我运行代码时,我不会遇到任何错误或异常,但无法将插入的数据看到表中。以下是我的代码

SqlConnection con = 
    new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=F:\\Database1.mdf;Integrated Security=True");
con.Open();
SqlCommand cmd = 
    new SqlCommand("insert into tbl_insert  values ( " + Convert.ToInt32(txtId.Text) + "," + "'" + txtName.Text + "'" + "," + "'" + txtEmail.Text + "'" + "," + "'" + txtboxCity.Text + "'" + ")", con);
cmd.ExecuteNonQuery();
con.Close();

我附上了数据库截图。     数据库设计:

enter image description here

这是运行我的代码后获得的输出。 存储空值的输出:

enter image description here

2 个答案:

答案 0 :(得分:3)

您应始终使用parameterized queries来避免SQL Injection并从引用问题中获取rids:

SqlCommand cmd = new SqlCommand("insert into tbl_insert  values (@id,@name,@Email,@City)");
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(txtId.Text));
cmd.Parameters.AddWithValue("@name", txtName.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@City", txtboxCity.Text);

虽然直接指定类型并使用Value属性比AddWithValue更好:

cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = txtName.Text;

Can we stop using AddWithValue() already?

答案 1 :(得分:1)

试试这个

con.Open();
SqlCommand cmd = new SqlCommand(@"insert into tbl_insert values(@name,@email,@add)", con);
cmd.Parameters.AddWithValue("@name", txtname.Text);
cmd.Parameters.AddWithValue("@email", txtemail.Text);
cmd.Parameters.AddWithValue("@add", txtadd.Text);
cmd.ExecuteNonQuery();
con.Close();

我怀疑列id处于自动编号

如果不只是在查询中添加其他参数,请cmd.Parameters