2012-05-05 25 views
1

私の問題は不明です。示すCVS sqliteテーブルの作成

String skill = "blah test"; 
    Cursor c = ourDatabase.rawQuery("SELECT " + KEY_CBID + " FROM " + DATABASE_TABLE + " order by " + KEY_CBID + " DESC limit 1", null); 
    if (c != null) 
    { 
     c.moveToFirst(); 
     cbid = c.getInt(0); 
    } 

    ContentValues cv = new ContentValues(); 
    cv.put(KEY_SKILL, skill); 
    cv.put(KEY_CBID, cbid); 
    return ourDatabase.insert(DATABASE_TABLE2, null, cv); 

私のselect文

されています:第二のテーブルをqueriyngとき、私はそのようなテーブルを取得していないのです。これらは両方とも

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_CBID 
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME 
        + " TEXT NOT NULL, " + KEY_RACE + " TEXT NOT NULL," 
        + KEY_CLASS + " TEXT NOT NULL," + KEY_DEITY 
        + " TEXT NOT NULL," + KEY_GENDER + " TEXT NOT NULL," 
        + KEY_HEIGHT + " TEXT NOT NULL," + KEY_WEIGHT 
        + " TEXT NOT NULL);"); 

     db.execSQL("CREATE TABLE " + DATABASE_TABLE2 + " (" + KEY_CSID 
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_SKILL 
        + " TEXT NOT NULL, " + KEY_CBID + " INTEGER PRIMARY KEY FOREIGN KEY);" 
        ); 

編集のonCreateメソッド内にある

Cursor c = ourDatabase.rawQuery("SELECT " + KEY_SKILL + ", " + KEY_NAME + ", " + KEY_CBID + " FROM " + DATABASE_TABLE + ", " + DATABASE_TABLE2 + " WHERE " + DATABASE_TABLE +"."+KEY_CBID+" = " +DATABASE_TABLE2+"."+KEY_CBID+" && " +DATABASE_TABLE+"."+KEY_NAME+" = '"+item+"'", null); 
+0

データベースファイルへのパスとは何ですか? – alex

答えて

2

私はあなたの2番目のテーブルが作成されているとは思わない、ここでは外来キーを持つテーブルを宣言する方法です:

CREATE TABLE artist(
    artistid INTEGER PRIMARY KEY, 
    artistname TEXT 
); 

CREATE TABLE track(
    trackid  INTEGER, 
    trackname TEXT, 
    trackartist INTEGER, 
    FOREIGN KEY(trackartist) REFERENCES artist(artistid) 
); 

私はこれらをSQLite.orgから取り出しました。

はまた、外部キーは、Androidの使用のために、SQLiteのではデフォルトで無効になっています:

db.execSQL("PRAGMA FOREIGN_KEYS=ON;"); 

データを挿入する前に、お持ちでない場合は、

0
  1. 第2のテーブルの作成中にエラーが発生したかどうかを確認するには、catをログオンしてください。 sqlliteからのエラーがある場合は、新しいテーブルがDBに追加されている場合は、データベース場合は、db.open呼び出している場合は、あなたのコードからIF DBがアップグレードされ ことを確認し、それはlogcatに

  2. をログに記録されますすでに作成されていれば開かれます。この場合、新しいテーブルを作成するコードはヒットしません。だから、このように締結するあなたはすべての既存のテーブルを削除して、もう一度

    @Override ます。public voidのonCreate(SQLiteDatabaseデシベル){

    createAllTables(db); 
        Log.v(DBTAG, "DATABASE CREATED"); 
        // Toast.makeText(mCtx, "created", Toast.LENGTH_SHORT).show(); 
    } 
    
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
        Log.w(DBTAG, "Upgrading database from version " + oldVersion 
          + " to " + newVersion + ", which will destroy all old data"); 
        dropExistingTables(db); 
        onCreate(db); 
    } 
    
    private void dropExistingTables(SQLiteDatabase db) { 
    
        for (int i = 0; i < Utils.getDropTableQueries().size(); i++) { 
         db.execSQL(Utils.getDropTableQueries().get(i)); 
        } 
    } 
    

を作成することができ、データベースをアップグレードすることを確認する必要がありますテーブルを作成していることを確認し、作成中にエラーがないことを確認してください。

+0

ありがとう!私はlogcatでそれを考え出した – SilverWolfe

関連する問題