簡體   English   中英

將參數傳遞給 PostgreSQL 中的 Insert 語句

[英]Passing parameters to Insert statement in PostgreSQL

我有一個 WCF windows 服務,該服務用於對 PostgreSQL 執行 CURD 操作。 現在我正在嘗試傳遞動態參數以在 PostgreSQL 中插入或更新語句。

我在客戶端使用查詢和參數構建了一個字符串,在服務端我正在解析該字符串以獲取查詢和參數名稱、值。

這是我從客戶端發送的字符串: Insert into Test_Images (ImageID,Image,Description) Values (@ImageID,@Image,@Description)*!*cf92d82b3fc6b53490df71a2e2989dfc*!*@ImageID*!*5*!*@Image*!*5646546546546546541621321654168514685141654564532168541*!*@Description*!*'Test'

這是我在服務端用來將這些值傳遞給數據庫的代碼:

Private Sub InsertBlob()
    'dbconn is the psqlconnection       
    procCmd.Connection = dbConn
    If (paramValues IsNot Nothing And paramNames IsNot Nothing) Then
        If (paramNames.Length <> paramValues.Length) Then
            Dim sE As New Exception("Parameter Names count and Values count do not match")
            sE.Data.Add("HTTPSTATUSCODE", 400)
            Throw sE
        End If
        For pCount = 0 To paramNames.Length - 1
            procCmd.Parameters.AddWithValue(paramNames(pCount), paramValues(pCount))
        Next
    End If
    dbConn.Open()
    procCmd.CommandText = sQuery
    procCmd.ExecuteNonQuery()
End Sub

這種方法正在放棄普遍的錯誤。 Pervasive.Data.SqlClient.Lna.k: [LNA][PSQL][SQL Engine]Error in expression: @ImageID

雖然下面沒有參數的查詢總是正確執行。

 Insert into Test_Images (ImageID,Image,Description) Values (2,5646546546546546541621321654168514685141654564532168541,'Test')

有人可以幫我將這些值作為參數插入。 而且我還需要幫助傳遞 Image 字段的 BLOB 數據。

注意:Image 字段的數據是 LONGVARBINARY 類型,因為我無法在此處插入總 BLOB 數組,所以我插入了一個小的二進制字符串以供理解。 我正在使用 BLOB 數組,因為我無法發送圖像的路徑,因為客戶端和服務器不會在同一台機器上。

精美的手冊說“在位置上使用?作為參數占位符。添加值的順序與?出現在 SQL 中的順序相同”(釋義)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM