【问题标题】:Unable to insert form data to the sql database无法将表单数据插入sql数据库
【发布时间】:2017-01-24 07:36:28
【问题描述】:

我有一个简单的表格,上面写着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();

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

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

【问题讨论】:

  • 执行此查询时是否遇到任何错误?
  • 我不太确定你遇到的问题,但只是想提醒你一下 SqlParameter 的msdn.microsoft.com/en-us/library/… 你写的代码很容易受到 SQL 注入的影响,所以我会如果这个项目不仅仅是练习/乐趣,绝对推荐添加 SqlParameter
  • @un-lucky iam 在运行此程序时没有收到错误
  • 你也在发送ID吗??? :O:O
  • @AnkitkumarBhatt 是的,我也在发送 ID

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


【解决方案1】:

您应该始终使用parameterized queries 来避免SQL Injection 并摆脱引用问题:

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?

【讨论】:

    【解决方案2】:

    试试这个

    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

    【讨论】:

    • 如果id列是Identity,他应该给出错误但他已经提到:我没有遇到任何错误或异常
    • 同样的问题继续...没有错误调试显示数据被正确添加但它没有出现在表格中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多