Vb.net 返回0而不是实际值

Vb.net 返回0而不是实际值,vb.net,sqlite,oledb,executescalar,Vb.net,Sqlite,Oledb,Executescalar,我在SqliteStudio3.1.0中使用了相同的SQL查询,使用我传入的相同参数,它不会出现任何问题。当我在VB项目中使用相同的SQL并使用下面的代码时,它返回0而不是正确的值 Private Function GetData() As Object Dim sql As String = "Select Data from Table where Option = ?" Return FunctionObject(sql, New List(Of Object) Fro

我在SqliteStudio3.1.0中使用了相同的SQL查询,使用我传入的相同参数,它不会出现任何问题。当我在VB项目中使用相同的SQL并使用下面的代码时,它返回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的相同代码,OleDb是以与此完全相同的方式构建的,它使用相同的SQL语句。那么,我是否遗漏了一些东西,使行为与SQLite、OleDb连接和executeScalar不同,因为一个返回0,另一个返回正确的字符串?

它最终是一个错误的数据库字段。假设它是一个VarChar(200),但实际上它是一个数字(200)。因此,如果您在返回错误数据时遇到问题,那么您应该查看表本身。我从SQLite学到的一点是,它返回一个vbCr,因此您应该将.ToString().Replace(vbCr,String.Empty)添加到ExecuteScalar()

什么是
sqlQuery
?您从未完成对
sql
的查询。而且参数看起来也未命名。很抱歉,Cmd中没有正确的变量。sql正在查找名称SomeVariable的列数据。虽然您的语句仍然不完整,但它会在方法中传递<代码>从表中选择数据,其中选项=类似于
我们必须。
;)看看这个问题:你的权利。我错过了那个?。这不是问题所在。因为它存在于我的实际代码中,所以我必须把它省略掉,所以我不确定为什么它返回0,因为这同样适用于调用此方法的所有其他sql查询。那么什么是
数据
ExecuteScalar
选择结果集第一行的第一列。该列和该行的值是多少?