数据没有更新到数据库中?

时间:2013-09-09 08:30:37

标签: sql sql-server vb.net

我希望从文本框中插入和更新数据。

为什么我的数据没有更新到数据库中? (Microsoft SQL Server Management Studio)任何人都可以帮助我。欣赏!

    //connection    

    //update 
    If dt.Rows.Count > 0 Then

        If dt.Rows.Count > 0 Then

        sql = "Update adm SET qty = '" & txtqty.Text & "' Where xxx = '" & Trim(Session("xxx")) & "' "
        cmd = New SqlCommand(sql, conn)
        'conn.open()
        cmd.ExecuteNonQuery()

        txtqty.Text = ""

    Else
// do insert    
    crow = ds.tables("adm").newrow()

    crow("xxx") = Session("xxxx")
    crow("xxx") = Session("xxx")
    crow("xxx") = xxxxx
    crow("xxx") = xxxxx
    crow("xxxxx") = xxxxx
    crow("xxxx") = xxxxx
    crow("xxxxx") = xxxxx
    crow("xxxx") = xxxxx
    crow("xxxx") = xxxxx
    crow("qty") = trim(txtqty.text)

    ds.tables("adm").rows.add(crow)

    da.update(ds, "adm")

    lbl.Text = "<strong>Data saved! </font></strong>"

    conn.close()

End If

这是连接

    sql = "SELECT * FROM adm  "
    conn = New SqlConnection(ConnStr)
    cmd = New SqlCommand(sql, conn)
    conn.open()
    da = New SqlDataAdapter(cmd)
    cb = New SqlCommandBuilder(da)
    ds = New DataSet
    da.fill(ds, "adm")
    dt = ds.Tables(0)

1 个答案:

答案 0 :(得分:1)

您应该始终使用参数化查询来避免SQL注入漏洞 - 而且它也更快!

要使用参数,请编写如下的SQL语句:

string stmt = "Update adm SET qty = @Qty WHERE ID = @ID"

然后像这样使用它:

using (SqlCommand cmd = new SqlCommand(stmt, conn))
{        
    cmd.Parameters.Add("@Qty", SqlDbType.Int).Value = 42;
    cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 4711;

    conn.Open();
    cmd.ExecuteNonQuery();
}

有关在ADO.NET中使用参数化查询的更多资源: