0

SQLServerデータベースにデータを挿入しようとすると問題が発生します。

これが機能です

 Public Sub Processsales()

        Dim cust_guid As Guid = Session("guid")
        Dim Iden As Guid = System.Guid.NewGuid
        Dim ssql As String
        ssql = "Insert into WebSite.wTranH ([WebTranHGUID],[TranType],[LOCTN]) values ([Iden],[2],[5])"

        Using connection As New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("SqlConnectionString"))
            Dim command As New SqlCommand(ssql, connection)
            connection.Open()
            command.ExecuteNonQuery()
        End Using
    End Sub

しかし、これらのエラーを与える

無効な列名'Iden'。

列名「2」が無効です。

列名「5」が無効です。

解決策はありますか?

ありがとう

4

3 に答える 3

2

最善の方法は、パラメータ化されたクエリを使用してSQL インジェクション攻撃を回避することです。

Public Sub Processsales()
    Dim cust_guid As Guid = Session("guid")
    Dim Iden As Guid = System.Guid.NewGuid()

    ' define your SQL query and use parameters for the values to be inserted           
    Dim sqlQuery As String = "INSERT INTO WebSite.wTranH([WebTranHGUID], [TranType], [LOCTN]) VALUES (@HGuid, @TranType, @LocTn)"

    Dim connString As String = ConfigurationSettings.AppSettings("SqlConnectionString")

    Using connection As New SqlConnection(connString)
        Using command As New SqlCommand(sqlQuery, connection)
            connection.Open()

            ' add paramters and their values to the SqlCommand instance
            command.Parameters.AddWithValue("@HGuid", Iden)
            command.Parameters.AddWithValue("@TranType", 2)
            command.Parameters.AddWithValue("@LocTn", 5)

            command.ExecuteNonQuery()
            connection.Close()
        End Using
    End Using
End Sub
于 2013-01-27T08:27:08.360 に答える
0

次を使用する必要があります。

values ('Iden',2 ,5 ) 

代わりは。

于 2013-01-27T07:58:27.177 に答える
0

SQL 文字列に 2 つのエラーがあります。および列に
固定値を渡しますが、列は名前ではなく構造体の値を取得する必要があります。もちろん、列名と混同しないように、値は括弧なしで渡す必要があります。 次のように Iden の値を sql コマンドに連結するようにコードを変更する必要があります。TranTypeLOCTNWebTranHGUIDIden

Public Sub Processsales()

    Dim cust_guid As Guid = Session("guid")
    Dim Iden As Guid = System.Guid.NewGuid
    Dim ssql As String
    ssql = "Insert into WebSite.wTranH ([WebTranHGUID],[TranType],[LOCTN]) " + 
    "values (" + Iden.ToString + ",2,5)"

    Using connection As New SqlConnection(....))
        Dim command As New SqlCommand(ssql, connection)
        connection.Open()
        command.ExecuteNonQuery()
    End Using




End Sub
于 2013-01-27T08:11:47.433 に答える