0

テキストボックスからデータを挿入して更新したい。

データがデータベースに更新されないのはなぜですか? (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)
4

1 に答える 1

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 でのパラメーター化されたクエリの使用に関するその他のリソース:

于 2013-09-09T09:02:48.547 に答える