2017-01-20 4 views
0

を返しますプロジェクトは正しい値の代わりに0を返します。私は同じSQLを使用して、私のVBに以下のコードを使用するとき。私はSQLiteStudio 3.1.0内の同じ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を使用する同じコードセットを持っており、同じSQL文で動作します。それで、SQLiteとOleDbの接続とexecuteScalarの動作を0に戻し、もう一方が正しい文字列を返すので、動作が違うものがありますか?

+1

「sqlQuery」とは何ですか? 'sql'のクエリは決して終了しません。また、パラメータも無名と見なされます。 – TyCobb

+0

申し訳ありませんが、私はCmdに正しい変数を持っていませんでした。 sqlはSomeVariableという名前の列データを探しています。それはメソッドで渡されます –

+0

あなたのステートメントはまだ不完全ですが。 'Tableからデータを選択すると、Option ='は次のようになります。それは絶対必要です.';)この質問を見てください:http://stackoverflow.com/questions/809246/adding-parameters-in-sqlite-with-c-シャープ – TyCobb

答えて

0

それは間違っているデータベースのフィールドになってしまいました。 VarChar(200)であると考えられていましたが、代わりにNumeric(200)でした。したがって、間違ったデータが返されて問題が発生した場合は、テーブル自体を参照する必要があります。私がSQLiteから学んだことは、vbCrを返すので、.ToString()を追加する必要があります。ExecuteScalar()に(vbCr、String.Empty)を置き換えます。

関連する問題