2011-09-27 132 views
0

我尝试在android中插入多个数据到sqlite,但我不能。 我想创建和插入代码bolow,请帮助我。Android多个插入数据到sqlite

这里是我的不好的代码,

package com.pepakbahasajawa.database; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class PepakDatabaseHelper extends SQLiteOpenHelper { 
    private static final String DATABASE_NAME = "pepakdb"; 
    private static final int DATABASE_VERSION = 1; 
    //Pembuatan Database 
    private static final String DATABASE_CREATE_1 = "create table pepak (_id integer primary key autoincrement, " 
     + "name text not null);"; 
    private static final String DATABASE_CREATE_2 = "create table category (_id integer primary key autoincrement, " 
     + "id_pepak integer(11) not null, cat_name varchar(255) not null);"; 
    private static final String DATABASE_CREATE_3 = "create table subcategory (_id integer primary key autoincrement, " 
     + "id_category integer(11) not null, subcat_name varchar(255) not null);"; 
    private static final String DATABASE_CREATE_4 = "create table posts (_id integer primary key autoincrement, " 
     + "id_subcategory integer(11) not null, post_name_1 varchar(255) not null, post_name_2 varchar(255));"; 


    public PepakDatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

     @Override 
    public void onCreate(SQLiteDatabase database) { 
     // TODO Auto-generated method stub 
     database.execSQL(DATABASE_CREATE_1); 
     database.execSQL(DATABASE_CREATE_2); 
     database.execSQL(DATABASE_CREATE_3); 
     database.execSQL(DATABASE_CREATE_4); 

     String sql = "INSERT INTO pepak (name), category (name), subcategory (id_category)," + 
       "(subcat_name), posts (id_subcategory), (post_name_1), (post_name_2)" + 
       "VALUES (Kawruh Rupa), VALUES (1), VALUES (Tetawuhan), VALUES (1), VALUES (Arane Kembang), VALUES (1)," + 
       "VALUES (Kembang aren - Arane Dangu), VALUES (Bunga Aren - Disebut Dangu)"; 
     Log.v("simapn oke", sql); 
     database.execSQL(sql); 
    } 


    @Override 
    public void onUpgrade(SQLiteDatabase database, int oldVersion, 
      int newVersion) { 
     Log.w(PepakDatabaseHelper.class.getName(), 
       "Upgrading database from version " + oldVersion + " to " 
         + newVersion + ", which will destroy all old data"); 
     database.execSQL("DROP TABLE IF EXISTS pepak"); 
     database.execSQL("DROP TABLE IF EXISTS category"); 
     database.execSQL("DROP TABLE IF EXISTS subcategory"); 
     database.execSQL("DROP TABLE IF EXISTS posts"); 
      onCreate(database); 
    } 

} 

请帮助。 谢谢

回答

2

您的插入SQL是完全错误的。尝试添加一个条目并在第一个条目工作时再次执行。

String sql = "INSERT INTO pepak (name) VALUES (\"SampleText\");"; 
database.execSQL(sql); 

如果这样的作品,你可以简单地创建一个新的插入SQL语句,最后你将有类似的东西:

String sql = "INSERT INTO pepak (name) VALUES (\"SampleText\");"; 
database.execSQL(sql); 
sql = "INSERT INTO category (name) VALUES (\"CategoryText\");"; 
database.execSQL(sql); 

如果插入超过20个,你应该考虑自定义交易处理以加速插入。

// pseudocode 
database.startTransaction(); 
doAllInserts(); // method/loop for all inserts - depending on your needs 
database.setTransactionSuccessfull(); 
database.commit(); 
+0

是的谢谢你WarrenFaith,是的,我想插入超过20个。请给我更多关于该代码,我的意思是关于自定义事务的例子。和我新手机器人,我在http://www.droidnova.com搜索关于示例定制交易,但我不幸运。 – gabisabobo

+1

你也应该在这里搜索:它是我的最高投票答案:http://stackoverflow.com/questions/3501516/android-sqlite-database-slow-insertion/3501572#3501572 – WarrenFaith

+0

清除。感谢马丁:)定制交易是好的。 – gabisabobo