0

16 個のフィールドを持つデータベースがあり、最初の 7 個のフィールドに入力したいだけです。私はこのコマンドを使用しています

"INSERT INTO products (SupplierID, catalogid, ccode,cname,oprice,cprice,pother2) VALUES (" & reader("SupplierID").ToString() & "," & reader("catalogid").ToString() & "," & reader("ccode").ToString() & "," & reader("cname").ToString() & "," & reader("oprice").ToString() & "," & reader("cprice").ToString() & "," & reader("pother2").ToString() & ")"

解決策はありますか?

4

1 に答える 1

1

入力しない列が null 許容として指定されているか、デフォルトが割り当てられている限り (SQL サーバーを想定)、テーブル内の使用可能なフィールドのサブセットのみを入力しても問題はありません。

ただし、コマンドの作成方法に問題があります。文字列値 (つまり ccname) のように見えるものを引用符で囲んでおらず、SQL インジェクション攻撃から保護していません。

パラメータ化されたクエリを使用する方がはるかに優れています。

大まかに、コードは次のようになります。

Dim oCommand As New SqlCommand()

oCommand.Connection = oConnection

oCommand.CommandText = "INSERT INTO products (SupplierID, catalogid, ccode,cname,oprice,cprice,pother2) VALUES ("?, ?, ?, ?, ?, ?, ?)"

oCommand.Parameters(0).Value = reader("SupplierID")
oCommand.Parameters(0).Value = reader("catalogid")

etc...
于 2012-08-01T00:06:05.533 に答える