-1

フォームから SQL Server 2008 テーブルに値を挿入する必要があるプロジェクトに取り組んでいます。

ライセンス番号の値の 1 つが挿入されますが、データベースのカテゴリ列は空です。私が使用しているコードは次のとおりです。

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

データベースlicense_numberのデータ型は でnumericあり、 categoryですvarchar(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 licnscatagory;

それとは別に、あなたの問題は、数値とは何かを一重引用符で囲むことです。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 に答える