2017-08-24 7 views
-1

次のメソッドは、レコードが既にテーブルに存在するかどうかを確認する必要があります。しかし、私はそのような列の構文エラーを受け取りません。sqlite例外のような列がありません

public void ifExist(int myId) 
{ 
    string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "ormdemo.db3"); 
    var db = new SQLiteConnection(dbPath); 
    SQLiteCommand cmd = new SQLiteCommand(db); 
    cmd.CommandText = "SELECT count(*) FROM storeConsumption WHERE Id = ?"+ myId; 

    int count = Convert.ToInt32(cmd.ExecuteScalar<storeConsumption>()); 
    if (count == 0) 
    { 
     Console.WriteLine("The record is NOT Existed");  
    } 
    else 
    { 
     Console.WriteLine("The record is Existed"); 
    } 
}  

また、私はこのようにそれを実行しようとした:まだ同じエラーがある、けれども

cmd.CommandText = "SELECT count(*) FROM storeConsumption WHERE Id= ?'"+ myId+"'"; 

。私はそれをどのように解決できるかというアイデアがあれば感謝します。

+0

は、アプリケーションが一度にそれをチェックし、再びintallアンインストールします。 –

答えて

1

「Id =?」によって引き起こされたようです。パラメータを追加する場合は、次のコマンドラインを使用してください。

cmd.CommandText = "SELECT count(*)from storeConsumption WHERE Id = @myId"; cmd.Parameters.Add( "@ myId"、myId);

詳細:更新 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtext(v=vs.110).aspx

+0

お返事ありがとうございました。 Visual StudioはメソッドAddを認識できません。実際、私はcmd.Paramaterのために4つのメソッドを使用しています。しかし、私は必要なライブラリをすべて追加しました。提案はありますか? –

0

:次のコードは、エラーを解決してきたし、それがうまく機能している:

public async Task<Boolean> ifExist(int id){ 

    var result = await sdb.databaseConnection().ExecuteScalarAsync<int>("SELECT count(*) FROM storeConsumption WHERE Id = ?", id); 
    Console.WriteLine(result); 
    if (result > 0) return true; 

    return false; 

} 
関連する問題