2011-11-29 33 views
1

我有一個參數化的SQL查詢精簡版的一些問題。我似乎無法獲得SQL精簡版參數接受字符串值SQLLite更新查詢參數不接受系統的字符串值

Using cmd As SQLiteCommand = pConn.CreateCommand() 
    If tblLang = "en" Then 
     cmd.CommandText = "UPDATE [AT_Strings] SET [Data] = @tblData + 1 WHERE [RecordID] = @ID AND [language] = @tblLang1" 
     Dim tblData As New SQLiteParameter("@tblData") 
     Dim ID As New SQLiteParameter("@ID") 
     Dim tblLang1 As New SQLiteParameter("@tblLang1") 
     cmd.Parameters.Add(dataText) 
     cmd.Parameters.Add(ID) 
     cmd.Parameters.Add(tblLang) 
    Else 
     cmd.CommandText = "UPDATE [AT_Strings] SET [Data] = @dataText + 1 WHERE [RecordID] = @ID AND [language] = @tblLang1" 
     Dim tblData As New SQLiteParameter("@dataText") 
     Dim ID As New SQLiteParameter("@ID") 
     Dim tblLang1 As New SQLiteParameter("@tblLang1") 
     cmd.Parameters.Add(dataText) 
     cmd.Parameters.Add(ID) 
     cmd.Parameters.Add(tblLang) 
    End If 

    cmd.ExecuteNonQuery() 
End Using 

錯誤如下....

Unable to cast object of type 'System.String' to type 'System.Data.SQLite.SQLiteParameter'. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Data.SQLite.SQLiteParameter'. 

Source Error: 

Line 283: Dim ID As New SQLiteParameter("@ID") 

Line 284: Dim tblLang1 As New SQLiteParameter("@tblLang1") 

ERROR on Line 285... 

Line 285: cmd.Parameters.Add(dataText) 
+0

你能分享更多的代碼嗎? dataText變量來自哪裏? – CoderDennis

回答

2

這是我如何解決這個問題?

Dim SqlString As String 
SqlString = "UPDATE [AT_Strings] SET [Data] = @Data WHERE [ID] = @ID AND [Language] = @Language" 

Using cmd As New SQLiteCommand(SqlString, pConn)  
    cmd.CommandType = CommandType.Text  
    cmd.Parameters.AddWithValue("Data", dataText)  
    cmd.Parameters.AddWithValue("ID", f4)  
    cmd.Parameters.AddWithValue("Language", tblLang)  

    pConn.Open()  
    cmd.ExecuteNonQuery()  
    pConn.Close() 
End Using 

希望這可以幫助其他人!

+0

那你在做什麼呢?你可以解釋嗎? – Volatil3

+0

@ Volatil3而不是使用cmd.Parameters.Add(..),你使用cmd.Parameters.AddWithValue這確實你的GUID的隱式轉換( 「參數名稱」,yourGuid)。 – henningst

+0

所有三個字段都是字符串。沒有GUID。 – htm11h