package com.example.datalibrary.db; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.text.TextUtils; import android.util.Log; import com.example.datalibrary.listener.DBLoadListener; import com.example.datalibrary.model.Group; import com.example.datalibrary.model.User; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 数据库管理类 */ public class DBManager { /** * The constant TAG */ private static final String TAG = "DBManager"; private AtomicInteger mOpenCounter = new AtomicInteger(); private static DBManager instance; private static SQLiteOpenHelper mDBHelper; private SQLiteDatabase mDatabase; private boolean allowTransaction = true; private Lock writeLock = new ReentrantLock(); private volatile boolean writeLocked = false; /** * 单例模式,初始化DBManager * * @return DBManager实例 */ public static synchronized DBManager getInstance() { if (instance == null) { instance = new DBManager(); } return instance; } /** * 数据库初始化 * * @param context 当前上下文 */ public void init(Context context) { if (context == null) { return; } if (mDBHelper == null) { mDBHelper = new DBHelper(context.getApplicationContext()); } } /** * 释放数据库 */ public void release() { if (mDBHelper != null) { mDBHelper.close(); mDBHelper = null; } instance = null; } /** * 打开数据库 */ public synchronized SQLiteDatabase openDatabase() { if (mOpenCounter.incrementAndGet() == 1) { // Opening new database try { mDatabase = mDBHelper.getWritableDatabase(); } catch (Exception e) { Log.e(TAG, "openDatabase e = " + e.getMessage()); mDatabase = mDBHelper.getReadableDatabase(); } } return mDatabase; } /** * 关闭数据库 */ public synchronized void closeDatabase() { if (mOpenCounter.decrementAndGet() == 0) { // Closing database mDatabase.close(); } } // ---------------------------------------用户组相关(暂时废弃) start-------------------------------------- /** * 添加用户组 */ public boolean addGroup(Group group) { if (mDBHelper == null) { return false; } Cursor cursor = null; SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "group_id = ? "; String[] whereValue = {group.getGroupId()}; // 查询该groupId是否在数据库中,如果在,则不添加 cursor = db.query(DBHelper.TABLE_USER_GROUP, null, where, whereValue, null, null, null); if (cursor == null) { return false; } if (cursor.getCount() > 0) { return true; } mDatabase = mDBHelper.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("group_id", group.getGroupId()); cv.put("desc", group.getDesc() == null ? "" : group.getDesc()); cv.put("update_time", System.currentTimeMillis()); cv.put("ctime", System.currentTimeMillis()); long rowId = -1; try { rowId = mDatabase.insert(DBHelper.TABLE_USER_GROUP, null, cv); } catch (Exception e) { Log.e(TAG, "addGroup e = " + e.getMessage()); e.printStackTrace(); } if (rowId < 0) { return false; } Log.i(TAG, "insert group success:" + rowId); closeCursor(cursor); return true; } /** * 查询用户组(查询所有) */ public List queryGroups(int start, int offset) { Cursor cursor = null; List groupList = new ArrayList<>(); try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String limit = start + " , " + offset; cursor = db.query(DBHelper.TABLE_USER_GROUP, null, null, null, null, null, null, limit); while (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String groupId = cursor.getString(cursor.getColumnIndex("group_id")); String desc = cursor.getString(cursor.getColumnIndex("desc")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); Group group = new Group(); group.setGroupId(groupId); group.setDesc(desc); group.setCtime(ctime); groupList.add(group); } } finally { closeCursor(cursor); } return groupList; } /** * 查询用户组(根据groupId) */ public List queryGroupsByGroupId(String groupId) { ArrayList groupList = new ArrayList<>(); Cursor cursor = null; try { if (mDBHelper == null) { return groupList; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "group_id = ? "; String[] whereValue = {groupId}; cursor = db.query(DBHelper.TABLE_USER_GROUP, null, where, whereValue, null, null, null); while (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String desc = cursor.getString(cursor.getColumnIndex("desc")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); Group group = new Group(); group.setGroupId(groupId); group.setDesc(desc); group.setCtime(ctime); groupList.add(group); } } catch (Exception e) { Log.e(TAG, "queryGroupsByGroupId e = " + e.getMessage()); } finally { closeCursor(cursor); } return groupList; } /** * 删除用户组 */ public boolean deleteGroup(String groupId) { boolean success = false; try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); if (!TextUtils.isEmpty(groupId)) { String where = "group_id = ?"; String[] whereValue = {groupId}; if (mDatabase.delete(DBHelper.TABLE_USER, where, whereValue) < 0) { return false; } if (mDatabase.delete(DBHelper.TABLE_USER_GROUP, where, whereValue) < 0) { return false; } setTransactionSuccessful(mDatabase); success = true; } } finally { endTransaction(mDatabase); } return success; } // ---------------------------------------用户组相关(暂时废弃) end---------------------------------------- // ---------------------------------------用户相关 start---------------------------------------- /** * 添加用户 */ public boolean addUser(User user) { if (mDBHelper == null) { return false; } try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); ContentValues cv = new ContentValues(); cv.put("user_id", user.getUserId()); cv.put("user_name", user.getUserName()); cv.put("user_info", user.getUserInfo()); cv.put("group_id", user.getGroupId()); cv.put("face_token", user.getFaceToken()); cv.put("feature", user.getFeature()); cv.put("image_name", user.getImageName()); cv.put("ctime", System.currentTimeMillis()); cv.put("update_time", System.currentTimeMillis()); long rowId = mDatabase.insert(DBHelper.TABLE_USER, null, cv); if (rowId < 0) { return false; } setTransactionSuccessful(mDatabase); Log.i(TAG, "insert user success:" + rowId); } catch (Exception e) { Log.e(TAG, "addUser e = " + e.getMessage()); return false; } finally { endTransaction(mDatabase); } return true; } /** * 查询所有用户(按时间降序排序) */ public void queryAllUsers(DBLoadListener dbLoadListener) { Cursor cursor = null; List features = new ArrayList<>(); int mSuccessCount = 0; // 已获取成功的人脸数量 int count = 0; // 总数 try { if (mDBHelper == null) { return; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); cursor = db.query(DBHelper.TABLE_USER, null, null, null, null, null, "group_id asc,ctime desc"); count = cursor.getCount(); dbLoadListener.onStart(count); while (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String userId = cursor.getString(cursor.getColumnIndex("user_id")); String group_id = cursor.getString(cursor.getColumnIndex("group_id")); String userName = cursor.getString(cursor.getColumnIndex("user_name")); String userInfo = cursor.getString(cursor.getColumnIndex("user_info")); String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); byte[] feature = cursor.getBlob(cursor.getColumnIndex("feature")); String imageName = cursor.getString(cursor.getColumnIndex("image_name")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); User user = new User(); user.setId(dbId); user.setUserId(userId); user.setGroupId(group_id); user.setUserName(userName); user.setCtime(ctime); user.setUpdateTime(updateTime); user.setUserInfo(userInfo); user.setFaceToken(faceToken); user.setFeature(feature); user.setImageName(imageName); features.add(user); mSuccessCount++; if (dbLoadListener != null){ dbLoadListener.onLoad(mSuccessCount , count , ((float)mSuccessCount / (float)count)); } } if (dbLoadListener != null){ dbLoadListener.onComplete(features , count); } } catch (Exception e){ if (dbLoadListener != null){ dbLoadListener.onFail(mSuccessCount , count , features); } } finally { closeCursor(cursor); } } /** * 查询所有用户(按时间降序排序) */ public List queryAllUsers() { Cursor cursor = null; List users = new ArrayList<>(); try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "order by ctime desc"; String[] whereValue = new String[]{}; cursor = db.query(DBHelper.TABLE_USER, null, where, whereValue, null, null, null); while (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String userId = cursor.getString(cursor.getColumnIndex("user_id")); String groupId = cursor.getString(cursor.getColumnIndex("group_id")); String userName = cursor.getString(cursor.getColumnIndex("user_name")); String userInfo = cursor.getString(cursor.getColumnIndex("user_info")); String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); byte[] feature = cursor.getBlob(cursor.getColumnIndex("feature")); String imageName = cursor.getString(cursor.getColumnIndex("image_name")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); User user = new User(); user.setId(dbId); user.setUserId(userId); user.setGroupId(groupId); user.setUserName(userName); user.setCtime(ctime); user.setUpdateTime(updateTime); user.setUserInfo(userInfo); user.setFaceToken(faceToken); user.setFeature(feature); user.setImageName(imageName); users.add(user); } } finally { closeCursor(cursor); } return users; } /** * 查询用户(根据userId) */ public User queryUser(String userId) { Cursor cursor = null; try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "user_id = ?"; String[] whereValue = {userId}; cursor = db.query(DBHelper.TABLE_USER, null, where, whereValue, null, null, null); if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String userName = cursor.getString(cursor.getColumnIndex("user_name")); String group_id = cursor.getString(cursor.getColumnIndex("group_id")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); User user = new User(); user.setId(dbId); user.setUserId(userId); user.setGroupId(group_id); user.setUserName(userName); user.setCtime(ctime); user.setUpdateTime(updateTime); return user; } } finally { closeCursor(cursor); } return null; } /** * 查询用户(根据userName精确查询) */ public List queryUserByUserNameAccu(String userName) { Cursor cursor = null; List users = new ArrayList<>(); try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "user_name = ? "; String[] whereValue = {userName}; cursor = db.query(DBHelper.TABLE_USER, null, where, whereValue, null, null, null); if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String userId = cursor.getString(cursor.getColumnIndex("user_id")); String group_id = cursor.getString(cursor.getColumnIndex("group_id")); String userInfo = cursor.getString(cursor.getColumnIndex("user_info")); String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); byte[] feature = cursor.getBlob(cursor.getColumnIndex("feature")); String imageName = cursor.getString(cursor.getColumnIndex("image_name")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); User user = new User(); user.setId(dbId); user.setUserId(userId); user.setGroupId(group_id); user.setUserName(userName); user.setCtime(ctime); user.setUpdateTime(updateTime); user.setUserInfo(userInfo); user.setFeature(feature); user.setImageName(imageName); user.setFaceToken(faceToken); users.add(user); } } finally { closeCursor(cursor); } return users; } /** * 查询单一用户(根据userName模糊查询) */ public User queryUserByUserNameItem(String userName) { Cursor cursor = null; User user = null; try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "user_name LIKE ? order by ctime desc"; String[] whereValue = {"%" + userName + "%"}; cursor = db.query(DBHelper.TABLE_USER, null, where, whereValue, null, null, null); if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String userId = cursor.getString(cursor.getColumnIndex("user_id")); String group_id = cursor.getString(cursor.getColumnIndex("group_id")); String userNameQ = cursor.getString(cursor.getColumnIndex("user_name")); String userInfo = cursor.getString(cursor.getColumnIndex("user_info")); String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); byte[] feature = cursor.getBlob(cursor.getColumnIndex("feature")); String imageName = cursor.getString(cursor.getColumnIndex("image_name")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); user = new User(); user.setId(dbId); user.setUserId(userId); user.setGroupId(group_id); user.setUserName(userNameQ); user.setCtime(ctime); user.setUpdateTime(updateTime); user.setUserInfo(userInfo); user.setFeature(feature); user.setImageName(imageName); user.setFaceToken(faceToken); } } finally { closeCursor(cursor); } return user; } /** * 查询用户(根据userName模糊查询) */ public List queryUserByUserNameVag(String userName) { Cursor cursor = null; List users = new ArrayList<>(); try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "user_name LIKE ? order by ctime desc"; String[] whereValue = {"%" + userName + "%"}; cursor = db.query(DBHelper.TABLE_USER, null, where, whereValue, null, null, null); while (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String userId = cursor.getString(cursor.getColumnIndex("user_id")); String group_id = cursor.getString(cursor.getColumnIndex("group_id")); String userNameQ = cursor.getString(cursor.getColumnIndex("user_name")); String userInfo = cursor.getString(cursor.getColumnIndex("user_info")); String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); byte[] feature = cursor.getBlob(cursor.getColumnIndex("feature")); String imageName = cursor.getString(cursor.getColumnIndex("image_name")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); User user = new User(); user.setId(dbId); user.setUserId(userId); user.setGroupId(group_id); user.setUserName(userNameQ); user.setCtime(ctime); user.setUpdateTime(updateTime); user.setUserInfo(userInfo); user.setFeature(feature); user.setImageName(imageName); user.setFaceToken(faceToken); users.add(user); } } finally { closeCursor(cursor); } return users; } /** * 查询用户(根据dbId) */ public List queryUserById(int _id) { List users = new ArrayList<>(); Cursor cursor = null; try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "_id = ? "; String[] whereValue = {String.valueOf(_id)}; cursor = db.query(DBHelper.TABLE_USER, null, where, whereValue, null, null, null); if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { String groupId = cursor.getString(cursor.getColumnIndex("group_id")); String userId = cursor.getString(cursor.getColumnIndex("user_id")); String userName = cursor.getString(cursor.getColumnIndex("user_name")); String userInfo = cursor.getString(cursor.getColumnIndex("user_info")); String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); byte[] feature = cursor.getBlob(cursor.getColumnIndex("feature")); String imageName = cursor.getString(cursor.getColumnIndex("image_name")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); User user = new User(); user.setId(_id); user.setUserId(userId); user.setGroupId(groupId); user.setUserName(userName); user.setCtime(ctime); user.setUpdateTime(updateTime); user.setUserInfo(userInfo); user.setFeature(feature); user.setImageName(imageName); user.setFaceToken(faceToken); users.add(user); } } finally { closeCursor(cursor); } return users; } public User queryByUserId(String group,String uid) { User user = null; Cursor cursor = null; try { if (mDBHelper == null) { return null; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); String where = "user_id = ? "; String[] whereValue = {uid}; if(!TextUtils.isEmpty(group)){ where+=" and group_id = ? "; whereValue = new String[]{uid, group}; } //System.out.println("==isOk==>查询sql:"+where); //System.out.println("==isOk==>查询sql:"+whereValue[0]+","+whereValue[1]); cursor = db.query(DBHelper.TABLE_USER, null, where, whereValue, null, null, null); if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) { int dbId = cursor.getInt(cursor.getColumnIndex("_id")); String groupId = cursor.getString(cursor.getColumnIndex("group_id")); String userId = cursor.getString(cursor.getColumnIndex("user_id")); String userName = cursor.getString(cursor.getColumnIndex("user_name")); String userInfo = cursor.getString(cursor.getColumnIndex("user_info")); String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); byte[] feature = cursor.getBlob(cursor.getColumnIndex("feature")); String imageName = cursor.getString(cursor.getColumnIndex("image_name")); long updateTime = cursor.getLong(cursor.getColumnIndex("update_time")); long ctime = cursor.getLong(cursor.getColumnIndex("ctime")); user = new User(); user.setId(dbId); user.setUserId(userId); user.setGroupId(groupId); user.setUserName(userName); user.setCtime(ctime); user.setUpdateTime(updateTime); user.setUserInfo(userInfo); user.setFeature(feature); user.setImageName(imageName); user.setFaceToken(faceToken); } } finally { closeCursor(cursor); } return user; } /** * 更新用户(通过传入User类的方式) */ public boolean updateUser(User user) { boolean success = false; if (mDBHelper == null) { return success; } try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); if (user != null) { mDatabase.beginTransaction(); String where = "user_id = ?"; String[] whereValue = {user.getUserId()}; ContentValues cv = new ContentValues(); cv.put("user_id", user.getUserId()); cv.put("user_name", user.getUserName()); cv.put("image_name", user.getImageName()); cv.put("update_time", System.currentTimeMillis()); if (mDatabase.update(DBHelper.TABLE_USER, cv, where, whereValue) < 0) { return false; } } setTransactionSuccessful(mDatabase); success = true; } finally { endTransaction(mDatabase); } return success; } public boolean onlyUpdateUser(User user) { boolean success = false; if (mDBHelper == null) { return success; } try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); if (user != null) { //mDatabase.beginTransaction(); String where = "user_id = ?"; String[] whereValue = {user.getUserId()}; ContentValues cv = new ContentValues(); if(!TextUtils.isEmpty(user.getUserName())){ cv.put("user_name", user.getUserName()); } if(!TextUtils.isEmpty(user.getImageName())) { cv.put("image_name", user.getImageName()); } if(user.getFeature()!=null) { cv.put("feature", user.getFeature()); cv.put("face_token", user.getFaceToken()); } cv.put("update_time", System.currentTimeMillis()); if (mDatabase.update(DBHelper.TABLE_USER, cv, where, whereValue) < 0) { return false; } } setTransactionSuccessful(mDatabase); success = true; } finally { endTransaction(mDatabase); } return success; } /** * 更新用户(通过传入图片、命名的方式) */ public boolean updateUser(String userName, String imageName, byte[] feature) { if (mDBHelper == null) { return false; } try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); String where = "user_name = ? "; String[] whereValue = {userName}; ContentValues cv = new ContentValues(); cv.put("user_name", userName); cv.put("image_name", imageName); cv.put("update_time", System.currentTimeMillis()); cv.put("feature", feature); if (mDatabase.update(DBHelper.TABLE_USER, cv, where, whereValue) < 0) { return false; } setTransactionSuccessful(mDatabase); } finally { endTransaction(mDatabase); } return true; } /** * 删除用户 */ public boolean deleteUser(int id) { boolean success = false; try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); String where = "_id = ? "; String[] whereValue = {id + ""}; if (mDatabase.delete(DBHelper.TABLE_USER, where, whereValue) < 0) { return false; } setTransactionSuccessful(mDatabase); success = true; } finally { endTransaction(mDatabase); } return success; } /** * 删除用户 */ public boolean deleteUser(String userId) { boolean success = false; try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); if (!TextUtils.isEmpty(userId)) { String where = "user_id = ? "; String[] whereValue = {userId}; if (mDatabase.delete(DBHelper.TABLE_USER, where, whereValue) < 0) { return false; } setTransactionSuccessful(mDatabase); success = true; } } finally { endTransaction(mDatabase); } return success; } // ---------------------------------------用户相关 end------------------------------------------ private void beginTransaction(SQLiteDatabase mDatabase) { if (allowTransaction) { mDatabase.beginTransaction(); } else { writeLock.lock(); writeLocked = true; } } private void setTransactionSuccessful(SQLiteDatabase mDatabase) { if (allowTransaction) { mDatabase.setTransactionSuccessful(); } } private void endTransaction(SQLiteDatabase mDatabase) { if (allowTransaction) { mDatabase.endTransaction(); } if (writeLocked) { writeLock.unlock(); writeLocked = false; } } private void closeCursor(Cursor cursor) { if (cursor != null) { try { cursor.close(); } catch (Throwable e) { Log.e(TAG, "closeCursor e = " + e.getMessage()); } } } /** * 清空表 */ public void clearTable() { SQLiteDatabase database = mDBHelper.getWritableDatabase(); database.execSQL("delete from " + DBHelper.TABLE_USER); } // ---------------------------------------socket相关 start-------------------------------------- // 获取识别记录 // public List queryRecords(String startTime, String endTime) { // List responseGetRecords = new ArrayList<>(); // Cursor cursor = null; // try { // if (mDBHelper == null) { // return null; // } // SQLiteDatabase db = mDBHelper.getReadableDatabase(); // if (!TextUtils.isEmpty(startTime) && !TextUtils.isEmpty(endTime)) { // String where = "time > ? and time < ? "; // String[] whereValue = {startTime, endTime}; // cursor = db.query(DBHelper.TABLE_RECORDS, null, where, whereValue, null, null, null); // } else { // String sql = "select * from " + DBHelper.TABLE_RECORDS; // cursor = db.rawQuery(sql, null); // } // // if (cursor != null && cursor.getCount() > 0) { // while (cursor.moveToNext()) { // int dbId = cursor.getInt(cursor.getColumnIndex("_id")); // String userId = cursor.getString(cursor.getColumnIndex("user_id")); // String records = cursor.getString(cursor.getColumnIndex("records")); // String longId = cursor.getString(cursor.getColumnIndex("longId")); // String score = cursor.getString(cursor.getColumnIndex("score")); // String deviceId = cursor.getString(cursor.getColumnIndex("deviceid")); // String time = cursor.getString(cursor.getColumnIndex("time")); // String faceToken = cursor.getString(cursor.getColumnIndex("face_token")); // String groupId = cursor.getString(cursor.getColumnIndex("group_id")); // String userName = cursor.getString(cursor.getColumnIndex("user_name")); // // ResponseGetRecords responseGetRecord = new ResponseGetRecords(); // responseGetRecord.setIndex(String.valueOf(dbId)); // responseGetRecord.setUserId(userId); // responseGetRecord.setDeviceId(deviceId); // responseGetRecord.setRecords(records); // responseGetRecord.setLogId(longId); // responseGetRecord.setScore(score); // responseGetRecord.setTime(time); // responseGetRecord.setFaceToken(""); // responseGetRecord.setGroupId(groupId); // responseGetRecord.setUserName(userName); // // responseGetRecords.add(responseGetRecord); // } // } // } catch (Exception e) { // Log.e("shangtest", e.getMessage()); // } finally { // closeCursor(cursor); // } // return responseGetRecords; // } // // // // 添加识别记录 // public boolean addResponseGetRecords(ResponseGetRecords responseGetRecords) { // if (mDBHelper == null) { // return false; // } // try { // mDatabase = mDBHelper.getWritableDatabase(); // beginTransaction(mDatabase); // // ContentValues cv = new ContentValues(); // cv.put("user_id", responseGetRecords.getUserId()); // cv.put("records", responseGetRecords.getRecords()); // cv.put("longId", responseGetRecords.getLogId()); // cv.put("score", responseGetRecords.getScore()); // cv.put("deviceid", responseGetRecords.getDeviceId()); // cv.put("time", responseGetRecords.getTime()); // cv.put("user_name", responseGetRecords.getUserName()); // cv.put("group_id", responseGetRecords.getGroupId()); // cv.put("face_token", responseGetRecords.getFaceToken()); // // long rowId = mDatabase.insert(DBHelper.TABLE_RECORDS, null, cv); // if (rowId < 0) { // return false; // } // // setTransactionSuccessful(mDatabase); // } catch (Exception e) { // return false; // } finally { // endTransaction(mDatabase); // } // return true; // } // // // // 根据时间删除识别记录 // public boolean deleteRecords(String startTime, String endTime) { // boolean success = false; // try { // mDatabase = mDBHelper.getWritableDatabase(); // beginTransaction(mDatabase); // // if (!TextUtils.isEmpty(startTime) && !TextUtils.isEmpty(endTime)) { // String where = " time > ? and time < ?"; // String[] whereValue = {startTime, endTime}; //// String[] whereValue = {"2019-09-05 10:50:09", "2019-09-05 10:50:13"}; // // if (mDatabase.delete(DBHelper.TABLE_RECORDS, where, whereValue) < 0) { // return false; // } // // setTransactionSuccessful(mDatabase); // success = true; // } // // } finally { // endTransaction(mDatabase); // } // return success; // } // 根据userId删除识别记录 public boolean deleteRecords(String userName) { boolean success = false; try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); if (!TextUtils.isEmpty(userName)) { String where = "user_name = ?"; String[] whereValue = {userName}; if (mDatabase.delete(DBHelper.TABLE_RECORDS, where, whereValue) < 0) { return false; } setTransactionSuccessful(mDatabase); success = true; } } finally { endTransaction(mDatabase); } return success; } // 根据userId删除识别记录 public int cleanRecords() { int number = getRecordsNum(); boolean success = false; try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); String where = "1 = 1"; String[] whereValue = {}; if (mDatabase.delete(DBHelper.TABLE_RECORDS, where, whereValue) < 0) { return 0; } // 自增恢复为0 String resoreIdSql = "update sqlite_sequence set seq=0 where name='" + DBHelper.TABLE_RECORDS + "'"; mDatabase.execSQL(resoreIdSql); setTransactionSuccessful(mDatabase); success = true; } finally { endTransaction(mDatabase); } return number; } public int getRecordsNum() { int number = 0; { Cursor cursor = null; try { if (mDBHelper == null) { return 0; } SQLiteDatabase db = mDBHelper.getReadableDatabase(); cursor = db.rawQuery("select count(*) from " + DBHelper.TABLE_RECORDS, null); if (!cursor.moveToFirst()) { number = 0; } else { number = (int) cursor.getLong(0); } } finally { closeCursor(cursor); } return number; } } /** * 远程删除用户 */ public boolean userDeleteByName(String userNmae) { boolean success = false; try { mDatabase = mDBHelper.getWritableDatabase(); beginTransaction(mDatabase); if (!TextUtils.isEmpty(userNmae)) { String where = "user_name = ? "; String[] whereValue = {userNmae}; if (mDatabase.delete(DBHelper.TABLE_USER, where, whereValue) < 0) { return false; } setTransactionSuccessful(mDatabase); success = true; } } finally { endTransaction(mDatabase); } return success; } // ---------------------------------------socket相关 end---------------------------------------- }