首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -在哪里添加PRAGMA synchronous=OFF

Android -在哪里添加PRAGMA synchronous=OFF
EN

Stack Overflow用户
提问于 2016-07-13 01:23:49
回答 0查看 1.2K关注 0票数 1

我有一个创建数据库和插入数据到表中的代码,当我的应用程序第一次安装时。我想添加"PRAGMA synchronous=OFF“以提高插入速度。在下面的代码中,我应该在哪里添加"PRAGMA synchronous=OFF“?

代码语言:javascript
复制
public class DataBaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "scheduleDB";
    private static final int DB_VERSION = 1;

    Context context;

    public DataBaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DB_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {                
            db.execSQL("CREATE TABLE time (id INTEGER PRIMARY KEY AUTOINCREMENT, arrival VARCHAR(10), departure VARCHAR(10));");    
            insertTime(db,"city");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        try {
            onCreate(db);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public void insertTime(SQLiteDatabase database, String table) {
        BufferedReader br = null;
        String line;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            database.beginTransactionNonExclusive();
        } else {
            database.beginTransaction();
        }

        try {                
            br = new BufferedReader(new InputStreamReader(context.getAssets().open("time.txt")));
            while ((line = br.readLine()) != null) {                    
                String query = "INSERT INTO "+table+" (arrival, departure) VALUES (?,?)";
                SQLiteStatement statement = database.compileStatement(query);

                String[] time = line.split(",");

                for(int i = 1, n = time.length; i < n; i+=2) { 
                    statement.clearBindings();
                    statement.bindString(1,time[i-1]);//arrival
                    statement.bindString(2,time[i]);//departure
                    statement.execute();
                }
            }
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            database.setTransactionSuccessful();
            database.endTransaction();
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38335350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档