web-dev-qa-db-ja.com

SQLite netPCL-単純な選択

私はWindowsアプリからSQLiteを使用していますが、現在Xamarinでポータブルアプリを開発しているため、プラグインsqlite net pclを使用していますが、その動作を理解するのに非常に苦労しています。

次のように作成されたテーブルがあります。

public class Config
    {
        public string IP { get; set; }
        [SQLite.Net.Attributes.Default(true, "Client 2")]
        public string ID { get; set; }
    }

テーブルを作成するには:

db.CreateTable<Model.Config>();

問題:ID列の値を選択したいので、次のようにします。

List<string> hhid = db.Query<string>("select ID from Config",null);

この例外が発生します:"Object reference not set to an instance of an object"

このフィールドを見つけるために簡単な選択を行うにはどうすればよいですか?

ヒントをありがとう

10
Ignacio Gómez

これが私の代わりに誰かに役立つことを願っています...

角かっこ(<>)の間には、テーブル名があります。

db.Query<TableName>("select * from ....");

私のために働いたいくつかの例:

単純な選択:

var list = db.Query<MyTableName>("select * from MyTableName");

制限付きで選択:

var list = db.Query<MyTableName>("select * from MyTableName where lastname=? and firstname=?", lastnameValue, firstNameValue);
14
Ignacio Gómez

テーブル名のカスタムマッピングがある場合、受け入れられた回答は実際には役に立ちません。 「SQL」テーブル名は、実行時にタイプマッピングにアクセスするときに見つかります。

ここに拡張メソッドがあります

テーブル名のカスタムマッピングがある場合、受け入れられた回答は実際には役に立ちません。 「SQL」テーブル名は、実行時にタイプマッピングにアクセスするときに見つかります。

ここに拡張メソッドがあります

public static class NativeConnectionExtension
{
    public static List<T> SelectAllFrom<T>(this SQLiteConnection cnn) where T : new()
    {
        var mapping = cnn.GetMapping<T>();
        var result = cnn.Query<T>(String.Format("select * from {0};", mapping.TableName));
        return result;
    }
}
1
lbenini