Я использую тот же SQL-запрос в SQLiteStudio 3.1.0, и он работает без проблем с использованием того же параметра, который я передаю. Когда я использую тот же SQL и использую код ниже в своем VB project он возвращает 0 вместо правого значения.Возврат 0 вместо фактического значения
Private Function GetData() As Object
Dim sql As String = "Select Data from Table where Option = ?"
Return FunctionObject(sql, New List(Of Object) From {"This is a Test"})
End Sub
Public Function FunctionObject(ByVal sql As String, ByVal parameters As List(Of Object)) As Object
Using sqlconnection As New SQLiteConnection(ConnectionString)
sqlconnection.Open()
Using Cmd As New SQLiteCommand(sql, sqlconnection)
Dim par As SQLiteParameter
For Each parm As Object In parameters
par = Cmd.CreateParameter()
par.Value = parm
Cmd.Parameters.Add(par)
Next
FunctionObject = Cmd.ExecuteScalar()
End Using
End Using
End Function
Я передаю список объектов в метод параметров. Строка подключения работает, потому что она делает другие запросы sql. У меня есть идентичный набор кода, который использует OleDb, который построен точно так же, как и этот, и работает с этим же оператором SQL. Так что я чего-то не хватает, что может отличить поведение от SQLite и OleDb-соединения и executeScalar, так как один возвращает 0, а другой возвращает правильную строку?
Что такое 'sqlQuery'? Вы никогда не закончили запрос для 'sql'. И параметры также выглядят неназванными. – TyCobb
Извините, у меня не было переменной в Cmd. Sql ищет данные столбца для имени SomeVariable. Он передается по методу –
Ваше заявление, хотя оно еще не завершено. 'Выберите данные из таблицы, где Option =' как 'Обязательно, чтобы мы .' ;; Посмотрите на этот вопрос: http://stackoverflow.com/questions/809246/adding-parameters-in-sqlite-with-c- sharp – TyCobb