Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cmd As New SqlCommand("insert into accountant(acc_id,acc_name,payment_type,bill_no) values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "'", cn)
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
MsgBox("Accountant data inserted SucsessFully")
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
accouantant_Load(sender, e)
End Sub
1 に答える
2
おそらく、テキストボックスに一重引用符があります。
解決策は、パラメーターを使用して SQL 文字列を作成することです。
パラメータを使用すると、文字列、日付、またはその他のフィールドの解析の問題から解放されますが、パラメータの最も重要な点は、SQL インジェクション攻撃の防止です。
Dim cmd As New SqlCommand("insert into accountant(acc_id,acc_name,payment_type,bill_no)" +
"values (@id, @name, @ptype, @bnum)", cn)
cn.Open()
cmd.Parameters.AddWithValue("@id",TextBox1.Text)
cmd.Parameters.AddWithValue("@name", TextBox2.Text)
cmd.Parameters.AddWithValue("@ptype" TextBox3.Text)
cmd.Parameters.AddWithValue("@bnum", TextBox4.Text)
cmd.ExecuteNonQuery()
cn.Close()
まず、あなたの acc_id フィールドが Identity 列であるかどうかはわかりません。この場合、値を追加しないでください。データベースによって自動的に計算されます。
次に、すべてのフィールドが varchar/nvarchar などのタイプであると仮定します。そうでない場合は、次のようなパラメータ値の変換を使用する必要があります
cmd.Parameters.AddWithValue("@bnum", Convert.ToInt32(TextBox4.Text))
于 2012-11-30T20:44:37.623 に答える