2012-02-20 17 views
-3

私は、次の変数を使用してデータベースを作成:ブール値を正しく扱うデータベースを作成するにはどうすればよいですか?

public static final String KEY_VALUE = "x";    public static final String KEY_ISROOT = "y";    public static final String KEY_ROWID = "_id";    public static final String KEY_REALROWID = "_ids";    public static final String KEY_ISPOWER = "z";    public static final String KEY_POWERORROOTNUMBER = "b";    public static final String KEY_ISDIVISOR = "a";    public static final String KEY_ISMULTIPLIER = "c";    public static final String KEY_ISADD = "d";    public static final String KEY_ISSUBTRACT = "e";    public static final String KEY_ISPS = "f";    public static final String KEY_ISPE = "g";    private static final String TAG = "NotesDbAdapter";    private DatabaseHelper mDbHelper;    private SQLiteDatabase mDb;    private static final String DATABASE_NAME = "data";    private static final String DATABASE_TABLE = "notes";    private static final int DATABASE_VERSION =1;    private static final String DATABASE_CREATE =           " create table " +DATABASE_TABLE+ " ("          +KEY_VALUE+ " double,  "          +KEY_REALROWID+ " integer,  "          +KEY_ROWID+ " integer primary key autoincrement,  "+KEY_ISPOWER+ " boolean,  "+KEY_ISDIVISOR+ " boolean,  "+KEY_ISMULTIPLIER+ " boolean,  "+KEY_ISADD+ " boolean,  "+KEY_ISSUBTRACT+ " boolean,  "+KEY_ISPS+ " boolean,  "+KEY_ISPE+ " boolean,  "+KEY_POWERORROOTNUMBER+ " double,  "          +KEY_ISROOT+ " boolean);";  

挿入行のIDコードは次のとおりです。

public void createNote(double value, boolean isroot, boolean ispower, boolean ismultiply, boolean isdivisor, boolean add,       boolean issubtract, double roototpowerval, boolean paranthaseesend, boolean paranthaseesstart) {        ContentValues initialValues = new ContentValues();        initialValues.put(KEY_VALUE, value);        initialValues.put(KEY_ISROOT, isroot);        initialValues.put(KEY_ISPOWER, ispower);        initialValues.put(KEY_ISMULTIPLIER, ismultiply);        initialValues.put(KEY_ISDIVISOR, isdivisor);        initialValues.put(KEY_ISADD, add);        initialValues.put(KEY_ISSUBTRACT, issubtract);        initialValues.put(KEY_POWERORROOTNUMBER, roototpowerval);        initialValues.put(KEY_ISPE, paranthaseesend);        initialValues.put(KEY_ISPS, paranthaseesstart);      long r= mDb.insert(DATABASE_TABLE, null, initialValues);      int a = testCount();      ContentValues argsa = new ContentValues();      argsa.put(KEY_VALUE, value);      argsa.put(KEY_ISROOT, isroot);      argsa.put(KEY_ISPOWER, ispower);      argsa.put(KEY_ISMULTIPLIER, ismultiply);      argsa.put(KEY_ISDIVISOR, isdivisor);      argsa.put(KEY_ISADD, add);      argsa.put(KEY_ISSUBTRACT, issubtract);      argsa.put(KEY_POWERORROOTNUMBER, roototpowerval);      argsa.put(KEY_REALROWID, a);      argsa.put(KEY_ISPE, paranthaseesend);      argsa.put(KEY_ISPS, paranthaseesstart);      mDb.update(DATABASE_TABLE, argsa, KEY_ROWID + "=" + r, null);    }The fetchRow code is:    public Cursor fetchNote(long rowId) throws SQLException {        Cursor mCursor =            mDb.query(true, DATABASE_TABLE, new String[] {KEY_ISPS,KEY_ISPE,KEY_VALUE,KEY_ISROOT,KEY_REALROWID,KEY_ISPOWER,KEY_POWERORROOTNUMBER,KEY_ISDIVISOR,KEY_ISMULTIPLIER,KEY_ISADD,KEY_ISSUBTRACT}, KEY_REALROWID + "=" + rowId, null,                    null, null, null, null);        if (mCursor != null) {            mCursor.moveToFirst();        }        return mCursor;    } 

それは正しく、ここでビューを変更することができます。

 public void onClick(View v) {           double d = 3;           mDbHelper.deleteAllNotes();           mDbHelper.createNote(d, false, false, false, false, false, false, 0, false, false);           mDbHelper.createNote(0, false, false, true,false, false, false, 0, false, false);           Cursor c = mDbHelper.fetchNote(1);if(d==Double.valueOf(c.getString(c.getColumnIndexOrThrow(NotesDbAdapter.KEY_VALUE)))){setContentView(R.layout.works);}    } 

しかし、それをdoesntのここにビューを変更:

public void onClick(View v) {            
    double d = 3;            
    mDbHelper.deleteAllNotes();            
    mDbHelper.createNote(d, false, false, false, false, false, false, 0, false, false);       mDbHelper.createNote(0, false, false, true,false, false, false, 0, false, false);       Cursor c = mDbHelper.fetchNote(2);  
    if(Boolean.parseBoolean(c.getString(c.getColumnIndexOrThrow(NotesDbAdapter.KEY_ISMULTIPLIER)))){ 
    setContentView(R.layout.awesome); 
}    
} 

SQLデータベースを正しくブーリアンで送受信する方法を教えてください。

+0

"処理できません"を定義します。 – MatBailie

+0

こんにちは - あなたの投稿のコードを整理することができます。誰もが読むことはほとんど不可能です! –

+3

いいえ、行全体を見るために13マイル以上スクロールする必要はありません。 – JNK

答えて

2

SQLiteにはブール型が組み込まれていません。あなたはそれを自分で処理する必要があります。私は通常、代わりに整数値を使用し、trueまたはfalseの場合は1または0に設定します。次に、DB内で真であるかどうかをチェックする場合は、値が1かどうかをチェックします。

関連する問題