0

SQLite クエリの例を探しています。さまざまなメソッドとクラス名 (つまり、Open()、SQLiteDataReader、および SQLiteDatabase) が認識されなかったため、SQL で見つけることができたものはコンパイルされませんでした。

ラムダのものはよくわかりません。たとえば、次のようになります。

public Task<List<Platypi>> GetAllLocationsAsync()
{
    return new SQLiteAsyncConnection(SQLitePath).Table<Platypi>().ToListAsync();
}

...おそらく、返されたリストを介して Platypi テーブルのすべてのレコードを返します。しかし、私はそれらすべてを望んでいません。レコードを制限/フィルタリングしたいのです。これが始まりだと思います:

private async Task<List<Platypi>> GetLocationsForPeopleAndTimeRange(List<string> DuckbillIds, DateTime EarliestToShow, DateTime LatestToShow)
{
    SQLiteAsyncConnection conn = new SQLiteAsyncConnection(SQLitePath);
    var query = conn.Table<Locations>().Where(x => x.DuckbillId // ? what now ?
    return await query.ToListAsync();
}

...しかし、Where() 句の作成方法がわかりません。DuckbillId が DuckbillIDs の値の 1 つであり、DateTime フィールドが EarlyToShow と LatestToShow の間にあるすべてのレコードを照会する必要があります。IOW、疑似 SQL は次のようになります。

select * from Platypi で、duckbillId が DuckbillIds で、DateVal が EarliestToShow と LatestToShow の間 (両端を含む)

基本的な SQL の選択、挿入、更新、および削除 (CRUD 操作) の実用的な例をいくつか挙げたいと思います。2 番目に良いのは Lambda で、その構文は私にはかなり複雑に見えます。

LINQ でも大丈夫です。

アップデート

SQLite-Net のページ (http://code.google.com/p/sqlite-net/) でいくつかのサンプルを見つけたので、少なくともコンパイルされます。

public List<Locations> GetLocationsForPlatypiAndTimeRange(List<string> PlatypiIds, DateTime EarliestToShow,
                                                         DateTime LatestToShow)
{
    var db = new SQLite.SQLiteConnection(SQLitePath);

    StringBuilder sb = new StringBuilder();
    foreach (String s in PlatypiIds)
    {
        sb.Append(string.Format("{0},", s));
    }
    sb.Remove(sb.Length - 1, 1); // remove the superfluous trailing comma
    return
        db.Query<Locations>(
            "Select * from Locations Where PlatypusId in (?) and SentTimeLocal >= ? and SentTimeLocal <= ? Order by SentTimeLocal",
            sb.ToString(), EarliestToShow, LatestToShow);
}
4

1 に答える 1

1

コードサンプルに基づいて、sqlite-netを使用していると思います。そのreadmeドキュメントを見てみてください。SQL 構文を使用した実用的なサンプルがいくつかあります。

どのサンプルを試していたかはわかりませんが、あなたが言及しているクラス名は間違いなく sqlite-net の一部ではなく、SQLite ADO.NET プロバイダーからのもののように聞こえます。

于 2012-11-26T06:04:22.907 に答える