0

私は StackOverflow と他の多くの Web サイトを見回しましたが、これをまとめるコードがいくつか見つかりました。

Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page

  Dim sqlConnection As SqlConnection
  Dim sqlCommand As SqlCommand
  Dim sqlString, iName, iDescription As String
  Dim iQuantity As Integer
  Dim iPrice As Decimal

  Protected Sub cmdAddStock_Click(ByVal sender As Object, ByVal e As System.EventArgs)
  Handles cmdAddStock.Click

    iName = txtItemName.Text
    iDescription = txtDescription.Text
    iQuantity = txtQuantity.Text
    iPrice = txtPrice.Text

    Using myConnection As New SqlConnection("Server=localhost;Database=BBBLeeds;
    Trusted_Connection=True")
        myConnection.Open()

        sqlCommand = New SqlCommand("INSERT INTO tblItem(ItemName, Description, 
        Price, Stock) values('" + iName + "','" + iDescription + "','" + iPrice + 
        "','" + iQuantity + "')")

        sqlCommand.ExecuteNonQuery()
        myConnection.Close()
        Response.Redirect(Request.RawUrl, True)
    End Using
End Sub
End Class

戻ってくるエラーは次のとおりです。

「文字列「INSERT INTO tblItem(ItemName, De」から「Double」型への変換は無効です。」

これは、SQL を使用したデータ構造です。

http://i23.photobucket.com/albums/b368/Damo115/Untitled.png

あなたが提供できるアドバイスをありがとう。

4

3 に答える 3

1

これを行うようにコードを変更します。これにより、SQL インジェクションが回避され、連結を処理したり、値を引用符で囲んだりする必要がなくなります。

テーブルpriceにはmoneyデータ型がありStockますintが、値を一重引用符で囲んで文字列として送信しています。

sqlCommand = New SqlCommand("INSERT INTO tblItem(ItemName, Description, 
        Price, Stock) values(@item,@descr,@price,@stock)")

sqlCommand.Parameters.AddWithValue("@item",iName)
sqlCommand.Parameters.AddWithValue("@descr",iDescription)
sqlCommand.Parameters.AddWithValue("@price",iPrice)
sqlCommand.Parameters.AddWithValue("@stock",iQuantity)

sqlCommand.ExecuteNonQuery()
于 2013-02-13T23:04:13.077 に答える
0

文字列パラメータ(txtPrice.Text)を数値として渡します(db列のPriceは数値です)。最初に文字列を数字に変換する必要があります。

于 2013-02-13T22:45:12.997 に答える
-1

文字列を連結するに&は、演算子ではなく演算子を使用する必要があります+

sqlCommand = New SqlCommand("INSERT INTO tblItem(ItemName, Description, 
        Price, Stock) values('" & iName & "','" & iDescription & "','" + iPrice & 
        "','" & iQuantity & "')")
于 2013-02-13T22:51:26.590 に答える