-1

我正在做一个项目,我必须将表单中的值插入到 SQL Server 2008 表中。

插入的值之一是许可证号,但数据库中的类别列为空。我正在使用的代码是:

SqlCommand qry = new SqlCommand(
"INSERT INTO licnscatagory(license_number, catagory) 
 VALUES('"+ license_numberTextBox.Text +"','"+ catagoryComboBox.Text +"')", conn;
qry.ExecuteNonQuery();

在数据库license_number中有一个数据类型numericcategoryvarchar(50)

4

3 回答 3

3

使用此代码

SqlCommand qry = new SqlCommand(
     "INSERT INTO licnscatagory(license_number,catagory) 
     VALUES('"+ license_numberTextBox.Text +"','"+ catagoryComboBox.SelectedValue+"')", conn;
     qry.ExecuteNonQuery();
于 2013-02-21T11:54:46.503 回答
2

您的解决方案容易受到 SQL 注入攻击。想象一个用户在您的 license_numberTextBox 中输入以下内容。

'); DROP TABLE 目录;

除此之外,您的问题在于数字周围的单引号。在 ADO.NET 中执行此类插入或任何 SQL 查询的正确方法是使用参数。请参阅以下内容:

        SqlCommand qry = new SqlCommand("INSERT INTO licnscatagory (license_number, category) VALUES (@licenseNumber, @category)", conn);
        qry.Parameters.AddWithValue("licenseNumber", Convert.ToDecimal(license_numberTextBox.Text));
        qry.Parameters.AddWithValue("category", catagoryComboBox.Text);
        qry.ExecuteNonQuery();
于 2013-02-21T09:56:25.427 回答
1

使用此代码..

 SqlCommand qry = new SqlCommand(
 "INSERT INTO licnscatagory(license_number,catagory) 
 VALUES('"+ license_numberTextBox.Text +"','"+ catagoryComboBox.SelectedItem.Text +"')", conn;
 qry.ExecuteNonQuery();
于 2013-02-21T09:56:24.963 回答