java sqlite3查询慢_java – SQLite查询在Android上确实很慢

我有一个非常大的数据库,我需要查询以获取一些数据并在

Android上的ListView中显示.数据库大约5MB,存储在SD卡上.它在2个表中有6万条记录.问题是查询数据库以从一个特定列获取所有记录需要非常长的时间 – 就像模拟器和我的手机上的几分钟一样.我已经尝试了一切 – 将这些数据存储在平面文件中,xml – sqlite是我最后的希望.这是我用来打开数据库并查询它的类:

public class DataHelper {

private static final int DATABASE_VERSION = 1;

private static final String TABLE_NAME = "TableName";

private Context context;

private SQLiteDatabase db;

private SQLiteStatement insertStmt;

public DataHelper(Context context) {

this.context = context;

OpenHelper openHelper = new OpenHelper(this.context);

// this.db = openHelper.getReadableDatabase();

this.db = SQLiteDatabase.openDatabase(

Environment.getExternalStorageDirectory()

+ "/myDB.db", null,

SQLiteDatabase.NO_LOCALIZED_COLLATORS);

// this.insertStmt = this.db.compileStatement(INSERT);

}

public void deleteAll() {

this.db.delete(TABLE_NAME, null, null);

}

public List selectBrands() {

List list = new ArrayList();

Cursor cursor = this.db.query(TABLE_NAME, new String[] { "ColumnName" },

null, null, null, null, null);

}

if (cursor.moveToFirst()) {

do {

if (!(list.contains(cursor.getString(0)))) {

list.add(cursor.getString(0));

}

} while (cursor.moveToNext());

}

if (cursor != null && !cursor.isClosed()) {

cursor.close();

}

return list;

}

private static class OpenHelper extends SQLiteOpenHelper {

OpenHelper(Context context) {

super(context, null, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

onCreate(db);

}

}

并加入ListView部分:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

try {

ctxContext = this.getApplicationContext();

lView = (ListView) findViewById(R.id.ListView01);

lView.setTextFilterEnabled(true);

ParseSQLITETask task = new ParseSQLITETask();

task.execute(null);

} catch (Exception e) {

LogErr(e.getMessage());

}

}

private class ParseSQLITETask extends AsyncTask {

@Override

protected Void doInBackground(Void... urls) {

try {

DataHelper dHelper = new DataHelper(getApplicationContext());

list = (ArrayList) dHelper.selectBrands();

} catch (Exception e) {

LogErr(e.getMessage());

}

return null;

}

@Override

protected void onProgressUpdate(Void... progress) {

}

@Override

protected void onPostExecute(Void result) {

try {

lView.setAdapter(new ArrayAdapter(ctxContext,

R.layout.list_item, list));

} catch (Exception e) {

LogErr(e.getMessage());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值