2

SQLiteデータベースではbooleanの値をサポートしています。ここでは、テーブルを作成するために、私のクエリです:SQLiteデータベースでのブール値の操作

private static final String CREATE_TABLE_PROMEMORIE_RSI = "CREATE TABLE IF NOT EXIXSTS " 
      + promemorieRSI.PROMEMORIE_RSI_TABLE + " (" 
      + promemorieRSI.ID + " integer primary key autoincrement, " 
      + promemorieRSI.GIORNO + " integer, " 
      + promemorieRSI.MESE + " integer, " 
      + promemorieRSI.ANNO + " integer, " 
      + promemorieRSI.NOT_RIP_RSI + " boolean, " 
      + promemorieRSI.RIP_VAL_RSI + " integer, " 
      + promemorieRSI.UNIT_RIP_VAL_RSI + " text, " 
      + promemorieRSI.NOT_FISSA_RSI + " boolean, " 
      + promemorieRSI.ETICHETTA_RSI + " text, " 
      + promemorieRSI.REQUEST_CODE_RSI + " integer);"; 

あなたが見ることができるように、私はboolean値であることをnot_rip_rsinot_fissa_rsi列を設定します。私は、データベースにレコードを追加すると、どのような値を使用すべき

  • :私は、データベースがそれぞれ、10整数値としてtruefalse値を格納するが、今、私はこれを理解できないことを読んでこれらの列については?あなたは、私はこれらの列のboolean値を使用してレコードを追加するために、見ることができるように

    public void inserisciPromemoriaRSI(Integer giorno, Integer mese, Integer anno, Boolean not_rip, Integer rip_val, String unit_rip_val, Boolean not_fissa, String etichetta, Integer request_code){ 
         ContentValues val = new ContentValues(); 
         val.put(promemorieRSI.GIORNO, giorno); 
         val.put(promemorieRSI.MESE, mese); 
         val.put(promemorieRSI.ANNO, anno); 
         val.put(promemorieRSI.NOT_RIP_RSI, not_rip); 
         val.put(promemorieRSI.RIP_VAL_RSI, rip_val); 
         val.put(promemorieRSI.UNIT_RIP_VAL_RSI, unit_rip_val); 
         val.put(promemorieRSI.NOT_FISSA_RSI, not_fissa); 
         val.put(promemorieRSI.ETICHETTA_RSI, etichetta); 
         val.put(promemorieRSI.REQUEST_CODE_RSI, request_code); 
         mDb.insert(promemorieRSI.PROMEMORIE_RSI_TABLE, null, val); 
        } 
    

は、より良い説明については、ここで私の挿入方法です。これらの列のエントリの値をbooleanに設定しても、レコードを追加するときにboolean値の代わりに1または0の整数値を使用する必要があります。または、true1として自動的に格納します。 falseを0?ブール値を取得するためにcursor.getInt(column_index) == 1を使用する必要がありますか?私のコードで間違いをしていますか?もしそうなら、この問題をどのように解決すればいいですか?助言がありますか?

+0

コードの言語は? PSあなたはまだこれをgoogledしましたか? – philipxy

+0

[SQLiteのストアブール値]の重複している可能性があります(http://stackoverflow.com/questions/843780/store-boolean-value-in-sqlite) – philipxy

+0

すでにこの議論についての質問はありましたが、私の質問には答えられませんでした – DISSENNATORE

答えて

1

booleanはSQLiteに存在しません。代わりに、データベースにbooleanの値をINTEGERとしてSQLiteに格納します。使用できる値は、の場合は0trueの場合は1です。あなたが行くとbooleanにそれを変更するには、データベースからINTEGERを選択すると、使用:

boolean isTrue = cursor.getInt(columnNo) > 0; 

あなたがfalseの値をしたい場合は、:

boolean isFalse = cursor.getInt(columnNo) < 1; 

thisを見てください投稿と詳細についてはthis投稿を参照してください。

+0

私はすでにこれらの投稿を見てきましたが、私は理解できません。これらの列の値を 'boolean'型にすると、レコードを挿入すると' integer'の値を渡します'1'または' 0')または 'boolean'? – DISSENNATORE

+0

テーブル内の列を型 'INTEGER'に作成し、 '1'または '0'の値を渡します。 'boolean'はSQLiteには存在せず、整数として格納されます。 – Razor

+0

私が理解しているかどうかを見てみましょう。テーブルを作るためのクエリでは、 'boolean'型を' integer'に変更する必要があります(アップケースの場合でも同じですか? **挿入メソッドに 'boolean'型の値を渡すと、データベースは**自動的に_ **整数型(' 0'または '1')に変換されます(そして、私はクエリを変更するだけですテーブルを作ろう) – DISSENNATORE

関連する問題