2
我正在拉出頭來試圖弄清楚這一點。SQLServerCE .NET中的參數化查詢出現的問題
我無法使參數化查詢在VB.Net中工作,當我使用參數。
從我發現的情況來看,在.NET中使用函數中的參數會引發錯誤(請參閱示例代碼)。但是,在Visual Studio中的查詢窗口中運行不工作的查詢正常工作。
引發的錯誤是:
25922 - 爲函數的參數是無效的。
信息來源: http://msdn.microsoft.com/en-us/library/aa256772%28SQL.80%29.aspx
示例代碼:
Imports System.Data.SqlServerCe
Public Class MiniDemo
Public Shared Sub Main()
Dim cs As String = "Data Source=Inventory.sdf; Persist Security Info=False;"
Dim db As New SqlCeConnection(cs)
db.Open()
''#Using parameters works
Dim cmd As SqlCeCommand = db.CreateCommand()
cmd.CommandText = "INSERT INTO inventory_type (inv_type_id, inv_type_name) VALUES (@id, @name)"
cmd.Parameters.Add("@id", 1)
cmd.Parameters.Add("@name", "test")
cmd.ExecuteNonQuery()
''#Using parameters in functions does not work
Dim cmd2 As SqlCeCommand = db.CreateCommand()
''#Broken on multiple lines for readability (built using string builders in real code)
cmd2.CommandText =
"SELECT
inv_type_id,
inv_type_name
FROM
inventory_type
WHERE
((@id IS NULL) OR (inv_type_id = @id)) AND
((@name IS NULL) OR (inv_type_name = @name))"
cmd2.Parameters.Add("@id", 1)
cmd2.Parameters.Add("@name", "test") ''# Would not work with DBNull.Value either
Dim da2 As New SqlCeDataAdapter(cmd2)
Dim dt2 As New DataTable()
da2.Fill(dt2)
db.Close()
End Sub
End Class
我沒有看到您的第一個和第二個樣本之間的實質性差異。你指的是什麼「功能」? 。填()? – 2009-12-02 21:57:01
生產代碼中是否存在@nom和@nome差異?或者就在這個例子中? – overslacked 2009-12-02 21:59:19
就在這個例子中,更正 – Martin 2009-12-02 23:18:50