2012-10-25 217 views
0

我剛剛創建了一個插入數據庫的方法。但它仍然顯示相同的結果。我,只有unit1。代碼如下 DbAdapter.java在sqlite中插入多行

private static final String DATABASE_NAME="bible1"; 
private static final String DATABASE_TABLE="test1"; 
private static final int DATABASE_VERSION=1; 

public static final String KEY_ID="_id"; 
public static final String UNITS="units"; 
public static final String CHAPTERS="chapters"; 

private static final String CREATE_DATABASE="create table test1 (_id integer primary key autoincrement, units text not null, chapters text not null);"; 

private static SQLiteHelper sqLiteHelper; 
private static SQLiteDatabase sqLiteDatabase; 

private Context context; 

//constructor 

public DbAdapter(Context c){ 
    context = c; 
} 

private static class SQLiteHelper extends SQLiteOpenHelper{ 

    public SQLiteHelper(Context context){ 

     super(context,DATABASE_NAME,null,DATABASE_VERSION); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL(CREATE_DATABASE); 
     MakeUnits(); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 

    } 

} 

public DbAdapter open() throws SQLException{ 
    try{ 
    sqLiteHelper = new SQLiteHelper(context); 
    sqLiteDatabase = sqLiteHelper.getWritableDatabase(); 
    }catch(NullPointerException ne){ 
     Log.e("Database", "error in creating the table"); 
    } 

    return this; 
} 

public void close(){ 
    sqLiteHelper.close(); 
} 

public static void MakeUnits() 
{ 
    createUnits("unit1","chapter1"); 
    createUnits("unit2","chapter2"); 
} 

public Cursor fetchAllNotes(){ 
    return sqLiteDatabase.query(DATABASE_TABLE, new String[]{KEY_ID,UNITS,CHAPTERS}, null, null, null, null, null); 
} 

public static long createUnits(String units,String chapters){ 
    ContentValues content= new ContentValues(); 
    content.put(UNITS, units); 
    content.put(CHAPTERS, chapters); 
    return sqLiteDatabase.insert(DATABASE_NAME, null, content); 

} 

所以,現在怎麼辦?我認爲我創建的方法是正確的。

+0

我認爲您不能。你必須經過循環才能在數據庫中插入多個數據。由於SQLite的插入查詢一次只能處理一行數據。 – user370305

+0

請檢查以上修改後的代碼,並提出一些建議。 – test1990bdvt

回答

0

您需要修改插入如下:

public static long MakeUnits(SQLiteDatabase db) 
{ 
    long total = 0; 

    ContentValues insert1 = new ContentValues(); 
    insert1.put(UNITS, "Unit1"); 
    insert1.put(CHAPTERS, "CHAPTER1"); 
    total = db.insert(DATABASE_TABLE,null,insert1); 

    insert1.clear(); 
    insert1.put(UNITS, "Unit2"); 
    insert1.put(CHAPTERS, "CHAPTER2"); 
    total += db.insert(DATABASE_TABLE,null,insert1); 

    return total; 
} 

最好,我會建議你使用某種的去完成多個插入。

+0

我通過創建方法createUnit() – test1990bdvt

+0

是,這也很好 – waqaslam

+0

我改變了代碼,但請看看它。它仍然無法正常工作 – test1990bdvt