package com.shunzhi.parent.db; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList; import java.util.List; /** * Created by ToaHanDong on 2018/4/23. */ public class DBMessageController { public static DBMessageController dbMessageController = null; public static DBMessageController getInstance(Context context) { if (null == dbMessageController) { synchronized (DBMessageController.class) { if (null == dbMessageController) dbMessageController = new DBMessageController(context, false); } } return dbMessageController; } private Context context; private SQLiteDatabase database; public static final String DATABASE = "message.db"; public static final String TABLE_MESSAGE = "message";//表名 public static final String TABLE_TEMP="temp";//备份的表 public static String TEMP_SQL= "alter table "+TABLE_MESSAGE+" rename to "+TABLE_TEMP; public static String COPY_SQL="insert into "+TABLE_MESSAGE+" select * ,' ' from "+TABLE_TEMP; public static String DROP_SQL="drop table "+TABLE_TEMP; public static String sqlVersion2="create table if not exists " + DBMessageController.TABLE_MESSAGE + "(" + DBMessageController.MESSAGE_ID + " integer primary key autoincrement," + DBMessageController.MESSAGE_TITLE + " text unique," + DBMessageController.MESSAGE_MSGID + " text," + DBMessageController.MESSAGE_USERID + " text," + DBMessageController.MESSAGE_TYPE + " integer," + DBMessageController.MESSAGE_DATE+" text,"+ DBMessageController.MESSAGE_ISREAD + " text)"; public static final String MESSAGE_ID = "_id"; //主键 public static final String MESSAGE_TITLE = "title"; //内容 public static final String MESSAGE_USERID = "userid"; //用户的唯一标识 public static final String MESSAGE_TYPE = "type"; //消息类型 public static final String MESSAGE_ISREAD = "isread";//判断消息是否为已读 public static final String MESSAGE_MSGID = "msgid";//判断消息是否为已读 public static final String MESSAGE_DATE="date";//日期 static void createSongTable(SQLiteDatabase db) { String sql = "create table if not exists " + DBMessageController.TABLE_MESSAGE + "(" + DBMessageController.MESSAGE_ID + " integer primary key autoincrement," + DBMessageController.MESSAGE_TITLE + " text unique," + DBMessageController.MESSAGE_MSGID + " text," + DBMessageController.MESSAGE_USERID + " text," + DBMessageController.MESSAGE_TYPE + " integer," + DBMessageController.MESSAGE_ISREAD + " text)"; db.execSQL(sql); } /** * 在使用结束时应调用{@link #()}关闭数据库连接 */ public DBMessageController(Context context, boolean writable) { DBHelper helper = new DBHelper(context, DATABASE); if (writable) { this.database = helper.getWritableDatabase(); } else { this.database = helper.getReadableDatabase(); } this.context = context; } public void close() { if (database.isOpen()) { database.close(); } } public long addMessages(Messages messages) { ContentValues contentValues = new ContentValues(); contentValues.put(DBMessageController.MESSAGE_TITLE, messages.title); contentValues.put(DBMessageController.MESSAGE_TYPE, messages.type); contentValues.put(DBMessageController.MESSAGE_USERID, messages.userid); contentValues.put(DBMessageController.MESSAGE_ISREAD, messages.isRead); contentValues.put(DBMessageController.MESSAGE_MSGID, messages.msgId); contentValues.put(DBMessageController.MESSAGE_DATE,messages.date); return database.insert(DBMessageController.TABLE_MESSAGE, null, contentValues); } public int getMessagesCounts(String type) { String sql = "select * from " + TABLE_MESSAGE + "where type = ?"; Cursor cursor = database.rawQuery(sql, new String[]{type}); return cursor.getCount(); } public int getMessagesCountsAllNoRead() { String sql = "select * from " + TABLE_MESSAGE + " where isRead = ?"; Cursor cursor = database.rawQuery(sql, new String[]{"false"}); return cursor.getCount(); } public void setMeaasgesRead() { ContentValues contentValues = new ContentValues(); contentValues.put(MESSAGE_ISREAD, "true"); String whereClause="isRead = ?"; String[] whereArgs = new String[]{"false"}; database.update(TABLE_MESSAGE, contentValues, whereClause, whereArgs); } public List getAllMessages() { String sql = "select * from " + TABLE_MESSAGE; Cursor cursor = database.rawQuery(sql, null); List messagesList = new ArrayList<>(); while (cursor.moveToNext()) { Messages messages = new Messages(); messages.type = cursor.getInt(cursor.getColumnIndex(MESSAGE_TYPE)); messages.title = cursor.getString(cursor.getColumnIndex(MESSAGE_TITLE)); messages.date=cursor.getString(cursor.getColumnIndex(MESSAGE_DATE)); messagesList.add(messages); } return messagesList; } }