日期:2014-05-16 浏览次数:20546 次
这几天连续加班,昨天很早就睡了。一个人的时候要学会自我祝福,祝自己注意身体,天天精力充沛。明天父亲生日,在此祝父亲生日快乐,身体健康,笑口常开。
接着介绍android系统短彩信数据库设计。
单例模式,获取数据库设计类的单一引用。
关于数据模式,可以参考:http://blog.csdn.net/hailushijie/article/details/8715154。
1、
/** * Return a singleton helper for the combined MMS and SMS * database. */ /* package */ static synchronized MmsSmsDatabaseHelper getInstance(Context context) { if (sInstance == null) { sInstance = new MmsSmsDatabaseHelper(context); } return sInstance; }如果对象不存在,那么实例化一个对象。
2、
static final String DATABASE_NAME = "mmssms.db"; static final int DATABASE_VERSION = 55; private final Context mContext; private LowStorageMonitor mLowStorageMonitor; private MmsSmsDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); mContext = context; }super方法,第二个参数指明了数据库的名字 “mmssms.db”,第三个参数表明了当前数据库的版本。
3、
public static void updateThread(SQLiteDatabase db, long thread_id) { if (thread_id < 0) { updateAllThreads(db, null, null); return; } // Delete the row for this thread in the threads table if // there are no more messages attached to it in either // the sms or pdu tables. int rows = db.delete("threads", "_id = ? AND _id NOT IN" + " (SELECT thread_id FROM sms " + " UNION SELECT thread_id FROM pdu)", new String[] { String.valueOf(thread_id) }); if (rows > 0) { // If this deleted a row, let's remove orphaned canonical_addresses and get outta here db.delete("canonical_addresses", "_id NOT IN (SELECT DISTINCT recipient_ids FROM threads)", null); return; } // Update the message count in the threads table as the sum // of all messages in both the sms and pdu tables. db.execSQL( " UPDATE threads SET message_count = " + " (SELECT COUNT(sms._id) FROM sms LEFT JOIN threads " + " ON threads._id = " + Sms.THREAD_ID + " WHERE " + Sms.THREAD_ID + " = " + thread_id + " AND sms." + Sms.TYPE + " != 3) + " + " (SELECT COUNT(pdu._id) FROM pdu LEFT JOIN threads " + " ON threads._id = " + Mms.THREAD_ID + " WHERE " + Mms.THREAD_ID + " = " + thread_id + " AND (m_type=132 OR m_type=130 OR m_type=128)" + " AND " + Mms.MESSAGE_BOX + " != 3) " + " WHERE threads._id = " + thread_id + ";"); // Update the date and the snippet (and its character set) in // the threads table to be that of the most recent message in // the thread. db.execSQL( " UPDATE threads" + " SET" + " date =" + " (SELECT date FROM" + " (SELECT date * 1000 AS date, thread_id FROM pdu" + " UNION SELECT date, thread_id FROM sms)" + " WHERE thread_id = " + thread_id + " ORDER BY date DESC LIMIT 1)," + " snippet =" + " (SELECT snippet FROM" + " (SELECT date * 1000 AS date, sub AS snippet, thread_id FROM pdu" + " UNION SELECT date, body AS snippet, thread_id FROM sms)" +