[英]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.