将参数传递给 PostgreSQL 中的 Insert 语句



我有一个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')

有人可以帮我插入这些值作为参数吗?此外,我还需要帮助为图像字段传递 BLOB 数据。

注意:图像字段的数据是 LONGVARBINARY 类型,因为我无法在此处插入整个 BLOB 数组,因此我插入了一个小的二进制字符串只是为了理解。我正在使用 BLOB 数组,因为我无法发送图像的路径,因为客户端和服务器不会在同一台机器上。

精细手册说"使用?作为参数占位符,位置上。按与 相同的顺序添加值 ?出现在 SQL 中"(释义(

最新更新