0

データベースに挿入するメソッドを作成しました。しかし、それでも同じ結果を示しています。つまり、ユニット1のみ。コードは次のとおりです DbAdapter.java

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);

 }

だから今何をすべきか?私が作成した方法は正しいと思います。

4

2 に答える 2

0

1 つの挿入で複数の行を挿入することはできません。ただし、InsertHelper http://developer.android.com/reference/android/database/DatabaseUtils.InsertHelper.htmlを使用して、複数の挿入を効率的にすることができます。

于 2012-10-25T09:49:35.390 に答える
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;
 }

できれば、ある種のループを使用して複数の挿入を行うことをお勧めします。

于 2012-10-25T09:43:07.213 に答える