36

文字列配列をデータベースに保存する必要がありますが、できません。これは私が持っているものです:

 public long createEntry(String startTime, String endTime, String[] states) {
         ContentValues initialValues = new ContentValues();
         initialValues.put(START_KEY_TIME , startTime);
         initialValues.put(END_KEY_TIME , endTime);
         initialValues.put(KEY_STATE, states );

         return databaseConnect.insert(DATABASE_TABLE, null, initialValues);
}

しかし、string[]状態を入れると、内容の値は引数を取ることができないと言われます。どうすればそれを回避できますか?私は状態に 7 つのものがあると考えていました。7 つの個別の文字列を持ち、それぞれに物を格納してから、すべての文字列を文字列配列に戻すことはできますか? それともそれは悪い習慣でしょうか?

4

5 に答える 5

88

文字列配列をデータベースに保存できません。しかし、このトリックを使用できます。

1)したがって、メソッドを使用して単純な文字列に変換する必要がありますconvertArrayToString(String[] array)。これにより、「コンマ」を使用して文字列のすべての要素が連結されます。

2)この文字列をデータベースから取得する場合、メソッドを使用して文字列配列に戻すことができますconvertStringToArray(String str)。このメソッドは文字列を「カンマ」から分割し、元の配列を取得します。

public static String strSeparator = "__,__";
public static String convertArrayToString(String[] array){
    String str = "";
    for (int i = 0;i<array.length; i++) {
        str = str+array[i];
        // Do not append comma at the end of last element
        if(i<array.length-1){
            str = str+strSeparator;
        }
    }
    return str;
}
public static String[] convertStringToArray(String str){
    String[] arr = str.split(strSeparator);
    return arr;
}
于 2012-01-29T14:15:10.020 に答える
1

データベースが適切に設計されていないようです。ブール データを SQLite データベースに保存する場合は、ブール値を整数 0 (偽) および 1 (真) として保存できます。

于 2012-01-29T14:05:52.553 に答える