安卓数据库案例3

需求分析:
在这里插入图片描述

需要实现人脸检测,识别和聚类的功能.这三个模块是独立的模块,如果面对相册中大量的数据,需要将中间结果存储到数据库中.

因为纯属验证算法的准确性,这里建立的Table比较简单.

建立三个表格,分别是Pciture\Faces\Cluster表

文件结构如下:

GalleryConstrant.java中主要记录表格中列的名称,把列的名称用变量的形式存储起来,方便在其他地方引用.

GalleryDatabaseHelper.java继承SQLiteOpenHelper类,这里主要实现建表操作.

FaceDetection.java是调用实例,对数据表进行操作.

GalleryConstrant.java中主要记录表格中的列的名称
package com.lenovo.ailab.smartkit4.database;
import android.net.Uri;
/**

  • Created by mikeyna on 18-7-2.
    */
    public class GalleryConstrant {
    //picture table
    protected interface PictureColumns {
    String ID = “_picture_id”;
    String PATH = “path”;
    }
    public static final class Picture implements PictureColumns {
    private Picture() {
    }
    }
    //face table
    protected interface FaceColumns {
    String ID = “_face_id”;
    String PICTURE_ID = “picture_id”;
    String RECT = “face_rect”;
    String FEATURE = “face_feature”;
    String CLUSTER_ID = “cluster_id”;
    }
    public static final class Face implements FaceColumns {
    private Face() {
    }
    }
    //cluster tabel
    protected interface ClusterColumns {
    String ID = “_cluster_id”;
    String AVG_FEATURE = “average_feature”;
    }
    public static final class Cluster implements ClusterColumns {
    private Cluster() {
    }
    }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Android SQLite数据库的封装示例: 1. 创建DatabaseHelper类 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表格 String createTable = "CREATE TABLE IF NOT EXISTS mytable" + " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(createTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 升级数据库 db.execSQL("DROP TABLE IF EXISTS mytable"); onCreate(db); } } ``` 2. 创建DatabaseManager类 ```java public class DatabaseManager { private static DatabaseManager instance; private SQLiteDatabase database; private DatabaseHelper dbHelper; public static synchronized void initialize(Context context) { if (instance == null) { instance = new DatabaseManager(); instance.dbHelper = new DatabaseHelper(context); } } public static synchronized DatabaseManager getInstance() { if (instance == null) { throw new IllegalStateException(DatabaseManager.class.getSimpleName() + " is not initialized, call initialize(..) method first."); } return instance; } public synchronized SQLiteDatabase openDatabase() { if (database == null) { database = dbHelper.getWritableDatabase(); } return database; } public synchronized void closeDatabase() { if (database != null) { database.close(); database = null; } } } ``` 3. 创建实体类 ```java public class MyEntity { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 4. 创建DAO类 ```java public class MyEntityDao { private SQLiteDatabase database; public void open() { database = DatabaseManager.getInstance().openDatabase(); } public void close() { DatabaseManager.getInstance().closeDatabase(); } public void insert(MyEntity entity) { ContentValues values = new ContentValues(); values.put("name", entity.getName()); values.put("age", entity.getAge()); database.insert("mytable", null, values); } public void update(MyEntity entity) { ContentValues values = new ContentValues(); values.put("name", entity.getName()); values.put("age", entity.getAge()); database.update("mytable", values, "id=?", new String[]{String.valueOf(entity.getId())}); } public void delete(int id) { database.delete("mytable", "id=?", new String[]{String.valueOf(id)}); } public MyEntity findById(int id) { Cursor cursor = database.query("mytable", null, "id=?", new String[]{String.valueOf(id)}, null, null, null); if (cursor != null && cursor.moveToFirst()) { MyEntity entity = new MyEntity(); entity.setId(cursor.getInt(cursor.getColumnIndex("id"))); entity.setName(cursor.getString(cursor.getColumnIndex("name"))); entity.setAge(cursor.getInt(cursor.getColumnIndex("age"))); cursor.close(); return entity; } return null; } public List<MyEntity> findAll() { List<MyEntity> entities = new ArrayList<>(); Cursor cursor = database.query("mytable", null, null, null, null, null, null); if (cursor != null && cursor.moveToFirst()) { do { MyEntity entity = new MyEntity(); entity.setId(cursor.getInt(cursor.getColumnIndex("id"))); entity.setName(cursor.getString(cursor.getColumnIndex("name"))); entity.setAge(cursor.getInt(cursor.getColumnIndex("age"))); entities.add(entity); } while (cursor.moveToNext()); cursor.close(); } return entities; } } ``` 5. 在Activity中使用 ```java public class MainActivity extends AppCompatActivity { private MyEntityDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatabaseManager.initialize(getApplicationContext()); dao = new MyEntityDao(); dao.open(); // 插入数据 MyEntity entity = new MyEntity(); entity.setName("Tom"); entity.setAge(20); dao.insert(entity); // 更新数据 entity.setName("Jerry"); dao.update(entity); // 删除数据 dao.delete(entity.getId()); // 查询数据 MyEntity e = dao.findById(1); List<MyEntity> entities = dao.findAll(); dao.close(); } @Override protected void onDestroy() { super.onDestroy(); DatabaseManager.getInstance().closeDatabase(); } } ``` 这样就完成了基于Android SQLite数据库的封装,使得操作更加简单方便,同时也提高了代码的可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值