安卓sqlite数据库加速写入

安卓数据库在每一次写入的时候都是通过一个事务写入的,那么这样的后果就是写入的速度超级慢,一条在100ms附近,那么几千条的话,没有一两分钟是不行的。

想要加快,那么必须把所有的插入语句都放在一个事务中,这样的速度就会大大增加。

            db.beginTransaction();//启动事务
            try
            {
                String s = null;
                for(int i = 0 ;i< array.size();i++)
                {
                    s = array.get(i);
                    ContentValues contentValues = new ContentValues();
                    contentValues.put("P_url",s);
                    contentValues.put("P_class","null");
                    da.getWritableDatabase().insert("P_classification",null,contentValues);
                }
                db.setTransactionSuccessful();//设置事务不回滚,不设置的话那么就会和不设置事务的速度一样
            }finally {
                db.endTransaction();//结束事务事件
            }
            db.close();


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是在Android Studio中将人脸写入SQLite数据库的步骤: 1. 首先,需要导入OpenCV库,并在项目中添加对应的依赖项。 2. 创建一个SQLite数据库,并创建一个表来存储人脸信息。 3. 在应用程序中添加人脸识别功能,使用OpenCV库中的人脸检测算法来检测人脸。 4. 将检测到的人脸图像保存到本地,并将其路径存储到数据库中。 5. 当需要比较两张人脸图像时,可以从数据库中获取路径并加载图像,然后使用OpenCV库中的人脸识别算法来比较两张图像。 以下是一些示例代码: 创建SQLite数据库: ``` public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "face.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_FACE = "face"; private static final String COLUMN_ID = "id"; private static final String COLUMN_PATH = "path"; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String createTable = "CREATE TABLE " + TABLE_FACE + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_PATH + " TEXT)"; db.execSQL(createTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_FACE); onCreate(db); } } ``` 将人脸图像路径存储到数据库中: ``` public void addFace(String path) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_PATH, path); db.insert(TABLE_FACE, null, values); db.close(); } ``` 从数据库中获取人脸图像路径,并加载图像: ``` public Bitmap getFace(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_FACE, new String[]{COLUMN_ID, COLUMN_PATH}, COLUMN_ID + "=?", new String[]{String.valueOf(id)}, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); String path = cursor.getString(cursor.getColumnIndex(COLUMN_PATH)); cursor.close(); db.close(); return BitmapFactory.decodeFile(path); } db.close(); return null; } ``` 比较两张人脸图像: ``` public boolean compareFaces(Bitmap face1, Bitmap face2) { // 使用OpenCV库中的人脸识别算法比较两张图像 return true; } ``` 需要注意的是,人脸识别算法的实现可能会非常复杂,建议使用一个成熟的开源库来实现该功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值