2

サーバーからいくつかのテキストとブール値を取得しています。データベースに保存する必要があります。

これは私のテーブルです。ブール値をINTEGERとして定義しましたsqliteにはブール値はありません。

db.execSQL("CREATE TABLE outcomesStore(id INTEGER PRIMARY KEY AUTOINCREMENT , allowgo INTEGER,cod TEXT,youdidComments INTEGER, youwent INTEGER,ByDate INTEGER ," +
                "OnCompletion INTEGER,yourtext TEXT , yourGroup TEXT, yourConsultation INTEGER )");

サーバーからこれらの値を取得しています。

Store[] Storedata = Configuration.getStore();


    booleanvalues[0] = Store[0].isallowgo ();

そして、このように挿入します

 helperdatabase = new DatabaseHelperInurseBusiness(this);
            db = helperdatabase.getWritableDatabase();

            ContentValues insertOutcomes = new ContentValues();


            insertOutcomes.put(helperdatabase.ALLOW_GO,booleanvalues[0]);
        db.insert("outcomesStore", helperdatabase.ALLOW_GO,insertOutcomes);

エラーが発生しなくても機能しません。

4

2 に答える 2

27

実際、SQLite はBOOLEAN型をサポートしていますが、期待どおりではない可能性があります。

BOOLEANstandard を使用してタイプの列を作成CREATE TABLEし、次に入力できます。

CREATE TABLE mytable (name VARCHAR(10), flag BOOLEAN);
INSERT INTO mytable (name, flag) VALUES ('Alice', 0);
INSERT INTO mytable (name, flag) VALUES ('Bob',   1);

BOOLEAN次に、データを元に戻し、その間に標準ロジックを使用できます。

SELECT * FROM mytable WHERE flag

または別のBOOLEAN表現を使用する:

SELECT * FROM mytable WHERE NOT flag

等々。(必須の SQLFiddle )

言い換えれば、それはすべてうまく機能します。唯一の問題は、0代わりにFALSEおよび1代わりに使用する必要があることですTRUEこれには、クライアントソフトウェアから値を設定しようとすることが含まれます)。これは、他の SQL エンジンと多少似ていることに注意してください (たとえば、PostgreSQL は、クライアント ソフトウェアによる/値の設定に'0'/ '1''f'/'t'およびfalse/の使用をサポートしています)。trueFALSETRUE

また、このBOOLEANフィールドを数値コンテキスト (加算や乗算など) で使用すると、数値 0 または 1 として動作しますが、他の SQL エンジンでは加算するBOOLEANINTEGER、互換性のない型のために例外が発生する可能性があります。

于 2013-01-23T06:41:25.977 に答える
-2

私は解決策を得ました。

ありがとうヤクブ・アハマド。

    insertOutcomes.put(DatabaseHelperInurseBusiness.ALLOW_GO,storedata.isAllowGo()== true ? 1:0);
于 2013-01-23T08:38:33.257 に答える