AndroidÃæÊÔÖ®SQLiteÊý¾Ý¿â
ðØµºÏÃÃÅÊǸöºÜÃÀÀöµÄº£±õ³ÇÊУ¬¸øÎҵĸоõºÜÊæÊʺÍÓÆÏУ¬¾Ý˵Õþ¸®¶Ôµ½Äǹ¤×÷µÄ¸ßм¼ÊõÈ˲ŵÚÒ»ÄêÓÐ10ÍòÔªµÄ½±Àø£¬ÒòΪÕâ¸öÔÒòÎÒºÜÓÐÐËȤµÄ²Î¼ÓÁËÒ»¸öÏÃÃŹ«Ë¾µÄÃæÊÔ¡£ËûÃÇÖ÷ÒªÊÇÑз¢VOIP·½ÃæµÄ¼¼Êõ£¬¶ÔÊÖ»úÓ¦ÓõÄÐÔÄÜÓÅ»¯ºÍÒôƵËã·¨ÓнϸߵÄÒªÇó¡£
ËûÃÇÕÐÈ˵Äн×ʰëÄêÄÚÕÇÁË30ÍòÔª£¬¶¼Ò»Ö±¶¼Ã»ÓÐÕе½ºÏÊʵÄÈË¡£ÎªÊ²Ã´ÄØ?ÒòΪËûÃÇÒªÇó¼¼ÊõºÃµÄͬʱ£¬Ó¢ÓïÒ²ÒªºÃ¡£Ê²Ã´²Å½ÐºÃÄØ?¾ÍÊÇ¿ÉÒÔÓÃÁ÷ÀûµÄÓ¢ÓïºÍ¹úÍâµÄÍŶÓÎÞÕϰ½»Á÷¡£
Õâ¾ÍΪÄѺܶà³ÌÐòÔ±ÁË¡£ÕâÀï¾Í²»ÔÙ½²Ó¢ÓïµÄÀøÖ¾¹ÊÊÂÁË£¬ÎÒÃǻص½¼¼ÊõÃæÊÔÉÏ¡£ÏÃÃÅÕâ¼Ò¹«Ë¾¶Ô¼¼ÊõµÄÒªÇó»¹ÊDZȽϸߣ¬ÎÊÁ˺ܶà¶ÔAndroid»úÖÆµÄÀí½âÎÊÌâ£¬ÎªÊ²Ã´ÃæÊÔ¹ÙºÜÔÚÒâ¶Ô»úÖÆµÄÀí½âÄØ?ÒòΪʵ¼ÊµÄÏîÄ¿ÖкܶàÐÔÄÜÎÊÌâ¶¼ÊÇÓÉÓÚȱ·¦¶ÔAndroidÔËÐлúÖÆµÄÕýÈ·Àí½âµÄ³ÌÐòÔ±Òý·¢µÄ¡£³ýÁË»úÖÆÎÊÌ⣬ÏÖÔÚÓ¡Ïó±È½ÏÉîµÄ¾ÍÊǹØÓÚSQLiteÊý¾Ý¿â²Ù×÷µÄÐÔÄÜÓÅ»¯ÎÊÌâ¡£ ÃæÊÔÌ⣺ÈçºÎ¶ÔSQLiteÊý¾Ý¿âÖнøÐдóÁ¿µÄÊý¾Ý²åÈë?
AndroidϵͳÄÚÖÃÁËSQLiteÊý¾Ý¿â£¬²¢ÇÒÌṩÁËÒ»ÕûÌ×µÄAPIÓÃÓÚ¶ÔÊý¾Ý¿â½øÐÐÔöɾ¸Ä²é²Ù×÷¡£SQLiteÊÇÒ»¸öÇáÁ¿µÄ¡¢¿çƽ̨µÄ¡¢¿ªÔ´µÄÊý¾Ý¿âÒýÇæ¡£SQLiteÿ¸öÊý¾Ý¿â¶¼ÊÇÒÔµ¥¸öÎļþ(.db)µÄÐÎʽ´æÔÚ£¬ÕâЩÊý¾Ý¶¼ÊÇÒÔB-TreeµÄÊý¾Ý½á¹¹ÐÎʽ´æ´¢ÔÚ´ÅÅÌÉÏ¡£
ʹÓÃSQLiteDatabaseµÄinsert£¬deleteµÈ·½·¨»òÕßexecSQL·½·¨Ä¬È϶¼¿ªÆôÁËÊÂÎñ£¬Èç¹û²Ù×÷µÄ˳ÀûÍê³É²Å»á¸üÐÂ.dbÊý¾Ý¿â¡£ÊÂÎñµÄʵÏÖÊÇÒÀÀµÓÚÃûΪrollback journalÎļþ£¬½èÖúÕâ¸öÁÙʱÎļþÀ´Íê³ÉÔ×Ó²Ù×÷ºÍ»Ø¹ö¹¦ÄÜ¡£ ´ó¼Ò¿ÉÒÔÔÚ/data/data//databases/Ŀ¼Ï¿´µ½Ò»¸öºÍÊý¾Ý¿âͬÃûµÄ.db-journalÎļþ¡£
SQLiteÏëÒªÖ´ÐвÙ×÷£¬ÐèÒª½«³ÌÐòÖеÄSQLÓï¾ä±àÒë³É¶ÔÓ¦µÄ
SQLiteStatement£¬±ÈÈç\£¬Ã¿Ö´ÐÐÒ»´Î¶¼ÐèÒª½«Õâ¸öStringÀàÐ͵ÄSQLÓï¾äת»»³ÉSQLiteStatement¡£ÈçÏÂinsertµÄ²Ù×÷×îÖÕ¶¼Êǽ«ContentValuesת³ÉSQLiteStatementi£º
public long insertWithOnConflict(String table, String nullColumnHack,
ContentValues initialValues, int conflictAlgorithm) { // Ê¡ÂÔ²¿·Ý´úÂë
SQLiteStatement statement = new SQLiteStatement(this, sql.toString(), bindArgs); try {
return statement.executeInsert(); } finally { statement.close(); }
} finally {
releaseReference(); } }
¶ÔÓÚÅúÁ¿´¦Àí²åÈë»òÕ߸üеIJÙ×÷£¬ÎÒÃÇ¿ÉÒÔÖØÓÃSQLiteStatement£¬Ê¹ÓÃSQLiteDatabaseµÄbeginTransaction()·½·¨¿ªÆôÒ»¸öÊÂÎñ£¬ÑùÀýÈçÏ£º try {
sqLiteDatabase.beginTransaction();
SQLiteStatement stat = sqLiteDatabase.compileStatement(insertSQL); // ²åÈë10000´Î
for (int i = 0; i < 10000; i++) {
stat.bindLong(1, 123456); stat.bindString(2, \ stat.executeInsert(); }
sqLiteDatabase.setTransactionSuccessful(); }
catch (SQLException e) {
e.printStackTrace(); } finally { // ½áÊø
sqLiteDatabase.endTransaction(); sqLiteDatabase.close(); }
ÎÒÔÚ»ªÎªNexus 6PÉ϶Գ£¼ûµÄ¼¸ÖÖ×ö·¨×öÁËһϲâÊÔ¡£ Ö±½ÓʹÓÃSQLÓï¾ä½øÐвåÈë Ö±½ÓʹÓÃSQLÓï¾ä²åÈ룬Ìí¼ÓÊÂÎñ ʹÓÃContentValues·½Ê½£¬Ìí¼ÓÊÂÎñ ʹÓÃSQLiteStatement·½Ê½£¬Ìí¼ÓÊÂÎñ ½á¹ûÈçÏÂͼ£º
´ÓÊý¾ÝÉÏ¿´£¬µÚËÄÖÖ·½Ê½Ê¹ÓÃSQLiteStatement×î¿ì£¬²»¹ýÖ»ÒªÌí¼ÓÁËÊÂÎñ(»òÕß˵ֻÐèÒªÒ»¸öÊÂÎñ£¬²»ÊÇÿÌõ²åÈ붼ʹÓÃÊÂÎñ)£¬ºóÈýÖÖ·½Ê½µÄ²î±ð²¢²»´ó¡£ËùÒÔÕë¹ýÕâ¸öÌâÄ¿µÄ²åÈëµÄÓÅ»¯¿ÉÒÔͨ¹ý¡°SQLiteStatement+ÊÂÎñ¡±µÄ·½Ê½ÏÔÖøÌá¸ßЧÂÊ¡£
²éѯ·½ÃæµÄÓÅ»¯Ò»°ã¿ÉÒÔͨ¹ý½¨Á¢Ë÷Òý¡£½¨Á¢Ë÷Òý»á¶Ô²åÈëºÍ¸üеIJÙ×÷ÐÔÄܲúÉúÓ°Ï죬ʹÓÃË÷ÒýÐèÒª¿¼ÂÇʵ¼ÊÇé¿ö½øÐÐÀû±×Ȩºâ£¬¶ÔÓÚ²éѯ²Ù×÷Á¿¼¶½Ï´ó£¬ÒµÎñ¶ÔÒªÇó²éѯҪÇó½Ï¸ßµÄ£¬»¹ÊÇÍÆ¼öʹÓÃË÷Òý¡£ËùÒÔÕâ»áÓÐÒ»¸öÈ¡ÉáÎÊÌ⣬¿´ÄãµÄÏîÄ¿ÊDzéѯƵ·±»¹ÊDzåÈëºÍÐÞ¸ÄÆµ·±¡£µ±È»»¹ÓÐһЩСµÄÓÅ»¯Ï¸½Ú£¬Èç¹ûÃæÊÔ¹ÙÎʵ½Ò²¿ÉÒÔ˵¼¸µã(Èçlimit)¡£ Ïß³ÌÎÊÌâ
SQLiteµÄͬ²½Ëø¾«È·µ½Êý¾Ý¿â¼¶£¬Á£¶È±È½Ï´ó£¬²»Ïñ±ðµÄÊý¾Ý¿âÓбíËø£¬ÐÐËø¡£Í¬Ò»¸öʱ¼äÖ»ÔÊÐíÒ»¸öÁ¬½Ó½øÐÐдÈë²Ù×÷¡£
Èç¹ûÓдóÁ¿µÄÊý¾Ý´¦Àí£¬ÄÇô¿Ï¶¨²»ºÏÊÊÓÚÔÚUIÏß³ÌÈ¥²Ù×÷£¬Õâʱ¾ÍÒª¿¼ÂǶàÏ̵߳ÄÎÊÌâÁË¡£ÎÒÃÇÈç¹û¿ªÒ»¸ö¹¤×÷Ïß³ÌÈ¥²Ù×÷SQLiteÊý¾Ý¿â£¬ÈçÅúÁ¿µØ²åÈë¿ÉÄÜÐèÒª30ÃëÖÓ£¬¶øÕâ¸öʱ¼äUIÏß³ÌÒ²Òª´ÓÊý¾Ý¿â¶ÁȡһÏÂÊý¾Ýչʾ¸øÓû§£¬ÄÇôÕâ¸öʱºòUIÏß³ÌÄܶÁÈ¡µ½Õâ¸öÊý¾Ý¿âÂð?´ó¼Ò¿ÉÒÔ˼¿¼Ò»ÏÂÕâ¸öÎÊÌâ¡£ ÎÒÃdz£³£ÔÚ¶àÏß³ÌÖÐֻʹÓÃÒ»¸öSQLiteDatabaseÒýÓã¬ÔÚÓÃ
SQLiteDataBase.close()µÄʱÐèҪעÒâµ÷ÊÇ·ñ»¹ÓбðµÄÏß³ÌÔÚʹÓÃÕâ¸öʵÀý¡£Èç¹ûÒ»¸öÏ̲߳Ù×÷Íê³Éºó¾ÍÖ±½ÓcloseÁË£¬±ðÒ»¸öÕýÔÚʹÓÃÕâ¸öÊý¾Ý¿âµÄÏ߳̾ͻáÒì³£¡£ËùÒÔÓÐЩÈË»áÖ±½Ó°ÑSQLiteDatabaseµÄʵÀý·ÅÔÚApplicationÖУ¬ÈÃËü
ÃǵÄÉúÃüÖÜÆÚÒ»Ö¡£Ò²ÓеÄ×ö·¨ÊÇдһ¸ö¼ÆÊýÆ÷£¬µ±¼ÆÊýÆ÷Ϊ0ʱ²ÅÕæÕý¹Ø±ÕÊý¾Ý¿â¡£
ʹÓÃORMµÄÎÊÌâ
Ä¿Ç°ÍøÉÏÓкܶ࿪ԴµÄORM(¶ÔÏó¹ØÏµÊý¾ÝÓ³Éä)¿ò¼Ü£¬ÈçgreenDAO¡¢ormliteµÈµÈ¡£ÔÚʹÓÃÕâЩ¿ò¼ÜÓбØÒªºÜÁ˽âÒ»ÏÂËüÃǵÄÀû±×£¬ÌرðÊÇһЩʹÓ÷´ÉäµÄ¿ò¼Ü£¬¶ÔÐÔÄܵÄÓ°Ïì»á±È½Ï´ó¡£ÓÐЩ¿ò¼ÜÔÚ¶àÏß³Ìͬ²½·½ÃæÒ²»á²úÉúһЩÎÊÌ⣬ËùÒÔʹÓÃʱҪÓÐËù¹ËÂÇ¡£
Realm ÊÇ×î½üÐËÆðµÄÒ»¸öרעÓÚÒÆ¶¯É豸Êý¾Ý¿âµÄ¿â£¬ÆäºËÐÄÊÇʹÓÃC++±àд£¬ºÅ³ÆºÜ¶àʱºòÊý¾ÝµÄ´æÈ¡ËٶȱÈSQLiteÒª¿ìºÜ¶à¡£²»¹ýÔÚÎÒµÄһЩÏîÄ¿ÖУ¬·¢ÏÖËü¶ÁÈ¡²¢²»±ÈSQLite¿ì¡£ С½á
ÔÚʵ¼ùÖÐÎÒÃÇ×ܽá³öÒ»ÌõÊØÔò£º¡°²»ÒªÓÃHelloworldÀ´²âÊÔ×Ô¼ºµÄ¿ò¼Ü(»ò´úÂë)£¬Òª²â¾ÍÒªÓÃÕæÊµµÄÊý¾ÝºÍ»·¾³¡£¡±
ÌØ±ðÊÇÕë¶ÔÊý¾Ý¿â·½Ã棬Èç¹ûÖ»Óü¸Ìõ¼òµ¥µÄÊý¾Ý½øÐвâʽ£¬ÄÇôÄã»áºÜÈÝÒ×°Á½¿ºÍÂú×㣬¶øºöÊÓÁ˺ܶàÎÊÌ⡣ûÓо¹ýÕæÊµÊý¾Ý(»ò´óÁ¿Êý¾Ý)²âÊÔ֮ǰ£¬²»Òª¶Ô×Ô¼ºµÄ´úÂëÌ«¹ý×ÔÐÅ¡£