0

ここに問題があります

cmd.ExectureNonQuery()

エラー:

列名または指定された値の数がテーブル定義と一致しません。

追加ボタンのコードは次のとおりです

Dim con As New SqlClient.SqlConnection("Server=.\SQLExpress;AttachDBFilename=C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Finals.mdf;Database=Finals;Trusted_Connection=Yes;")
Dim cmd As New SqlClient.SqlCommand

cmd.Connection = con
cmd.CommandText = "Insert Into [Finals].[dbo].[Nokia] Values ('" & Unit.Text & "'),('" & Price.Text & " '),('" & Stack.Text & "'),('" & Processor.Text & "'),('" & Size.Text & "'),('" & RAM.Text & "'),('" & Internal.Text & "'),('" & ComboBox1.Text & "')"

con.Open()
cmd.ExecuteNonQuery()
con.Close()

SQL Server 2008 R2 を使用していますが、追加を押すとエラーが発生します。誰かが解決策を見つけることができますか?

前もって感謝します。

4

1 に答える 1

1

これを試して:

Dim con As New SqlClient.SqlConnection("Server=.\SQLExpress;AttachDBFilename=C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Finals.mdf;Database=Finals;Trusted_Connection=Yes;")
Dim cmd As New SqlClient.SqlCommand

cmd.Connection = con
    ' the following text is wrapped for readability
    cmd.CommandText = "Insert Into [Finals].[dbo].[Nokia] Values ('" & Unit.Text & _
        "', '" & Price.Text & "', '" & Stack.Text & "', '" & Processor.Text & "', '" & _
        Size.Text & "', '" & RAM.Text & "', '" & Internal.Text & "', '" & _
        ComboBox1.Text & "')"
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
}

(各値をandにカプセル化する必要はありません)。私のコードのように、値リスト全体が単一の括弧セットにカプセル化されています。

別の注記として、このような文字列連結を実行すると、SQL インジェクションの脆弱性が発生します。値をステートメントに渡すには、sqlParameter オブジェクトを使用する必要があります。

于 2013-10-18T14:34:10.357 に答える