Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ǶÈëʽSQLiteÊý¾Ý¿â¼Ü¹¹ºÍÉè¼Æ
 
À´Ô´£ºcsdn ·¢²¼ÓÚ£º 2017-6-5
  2436  次浏览      28
 

SQLiteÊÇÒ»¸ö¿ªÔ´µÄ¡¢ÄÚǶʽµÄ¹ØÏµÐÍÊý¾Ý¿â¡£SQLiteºÍOracleºÍAccessÒ»ÑùÊÇÎļþÐÍÊý¾Ý¿â£¬¾ÍÊÇ˵£¬Ò»¸öÊý¾Ý¿â¾ÍÊÇÒ»¸öÎļþ£¬´ËÊý¾Ý¿âÀï¿ÉÒÔ½¨Á¢ºÜ¶àµÄ±í£¬¿ÉÒÔ½¨Á¢Ë÷Òý¡¢´¥·¢Æ÷µÈµÈ£¬µ«ÊÇËüʵ¼ÊÉϵõ½µÄ¾ÍÊÇÒ»¸öÎļþ¡£SQLiteÊý¾Ý¿â¾ßÓÐÏÂÃæµÄÌØµã£º

£¨1£©Ê×ÏÈSQLiteÊý¾Ý¿â·þÎñÆ÷¾ÍÔÚÄãµÄÊý¾Ý¿âÓ¦ÓóÌÐòÖУ¬ÆäºÃ´¦ÊDz»ÐèÒªÍøÂçÅäÖú͹ÜÀí£¬Ò²²»ÐèҪͨ¹ýÉèÖÃÊý¾ÝÔ´·ÃÎÊÊý¾Ý¿â·þÎñÆ÷¡£

£¨2£©Æä´ÎSQLiteÊý¾Ý¿âµÄ·þÎñÆ÷ºÍ¿Í»§¶ËÔËÐÐÔÚͬһ¸ö½ø³ÌÖС£ÕâÑù¿ÉÒÔ¼õÉÙÍøÂç·ÃÎʵÄÏûºÄ£¬¼ò»¯Êý¾Ý¿â¹ÜÀí£¬Ê¹ÄãµÄ³ÌÐò²¿ÊðÆðÀ´¸üÈÝÒס£

£¨3£©ÔÙ´ÎSQLiteÔÚ´¦ÀíÊý¾ÝÀàÐÍʱÓëÆäËüµÄÊý¾Ý¿â²»Í¬¡£Çø±ðÔÚÓÚËüËùÖ§³ÖµÄÀàÐÍÒÔ¼°ÕâЩÀàÐÍÊÇÈçºÎ´æ´¢¡¢±È½Ï¡¢Ç¿»¯(enforc)ºÍÖ¸ÅÉ(assign)¡£

SQLiteµÄÓòÍêÕûÐÔ±»³ÆÎªÓòÇ׺ÍÐÔ(affinity)¡£ÎªÁËÀí½âÀàÐÍÇ׺ÍÐÔ£¬Äã±ØÐëÏÈÒªÀí½â´æ´¢ÀàºÍÈõÀàÐÍ(manifesttyping)¡£SQLiteÓÐInteger¡¢Real¡¢Text¡¢BlobºÍNullÎå¸öԭʼµÄÊý¾ÝÀàÐÍ£¬±»³ÆÎª´æ´¢Àà¡£´æ´¢ÀàÕâ¸ö´Ê±íÃ÷ÁËÒ»¸öÖµÔÚ´ÅÅÌÉÏ´æ´¢µÄ¸ñʽ£¬Æäʵ¾ÍÊÇÀàÐÍ»òÊý¾ÝÀàÐ͵ÄͬÒå´Ê¡£

Êý¾Ý¿âSQLiteµÄÊý¾Ý¿â¼Ü¹¹

SQLiteÔڼܹ¹ÉϲÉÓÃÁËÄ£¿éµÄÉè¼Æ£¬ËüÓɹ«¹²½Ó¿Ú¡¢±àÒëÆ÷ϵͳ¡¢ÐéÄâ»úºÍºó¶ËËĸö×Óϵͳ×é³É¡£

1¡¢½Ó¿Ú(Interface)¡£ÓÉSQLite C API×é³É£¬Ò²¾ÍÊÇ˵²»¹ÜÊdzÌÐò¡¢½Å±¾ÓïÑÔ»¹ÊÇ¿âÎļþ£¬×îÖÕ¶¼ÊÇͨ¹ýËüÓëSQLite½»»¥µÄ(ÎÒÃÇͨ³£Óõý϶àµÄODBC/JDBC×îºóÒ²»áת»¯ÎªÏàÓ¦C APIµÄµ÷ÓÃ)¡£

2¡¢±àÒëÆ÷(Compiler)¡£ÔÚ±àÒëÆ÷ÖУ¬·Ö´ÊÆ÷£¨Tokenizer£©ºÍ·ÖÎöÆ÷(Parser)¶ÔSQL½øÐÐÓï·¨¼ì²é£¬È»ºó°ÑËüת»¯Îªµ×²ãÄܸü·½±ã´¦ÀíµÄ·Ö²ãµÄÊý¾Ý½á¹¹---Óï·¨Ê÷£¬È»ºó°ÑÓï·¨Ê÷´«¸ø´úÂëÉú³ÉÆ÷(code generator)½øÐд¦Àí¡£¶ø´úÂëÉú³ÉÆ÷¸ù¾ÝËüÉú³ÉÒ»ÖÖÕë¶ÔSQLiteµÄ»ã±à´úÂ룬×îºóÓÉÐéÄâ»úÖ´ÐС£

3¡¢ÐéÄâ»ú(Virtual Machine)¡£¼Ü¹¹ÖÐ×îºËÐĵIJ¿·ÖÊÇÐéÄâ»ú£¬»òÕß½Ð×öÐéÄâÊý¾Ý¿âÒýÇæ(Virtual Database Engine,VDBE)¡£ËüºÍJavaÐéÄâ»úÏàËÆ£¬½âÊÍÖ´ÐÐ×Ö½Ú´úÂë¡£VDBEµÄ×Ö½Ú´úÂëÓÉ128¸ö²Ù×÷Âë(opcodes)¹¹³É£¬ËüÃÇÖ÷Òª¼¯ÖÐÔÚÊý¾Ý¿â²Ù×÷¡£ËüµÄÿһÌõÖ¸Áî¶¼ÓÃÀ´Íê³ÉÌØ¶¨µÄÊý¾Ý¿â²Ù×÷(±ÈÈç´ò¿ªÒ»¸ö±íµÄÓαê)»òÕßΪÕâЩ²Ù×÷Õ»¿Õ¼äµÄ×¼±¸(±ÈÈçѹÈë²ÎÊý)¡£

4¡¢ºó¶Ë(Back-End)¡£ºó¶ËÓÉB-Ê÷(B-tree)£¬Ò³»º´æ(page cache£¬pager)ºÍ²Ù×÷ϵͳ½Ó¿Ú(¼´ÏµÍ³µ÷ÓÃ)¹¹³É¡£B-treeºÍpage cache¹²Í¬¶ÔÊý¾Ý½øÐйÜÀí¡£B-treeµÄÖ÷Òª¹¦ÄܾÍÊÇË÷Òý£¬Ëüά»¤×Ÿ÷¸öÒ³ÃæÖ®¼äµÄ¸´ÔӵĹØÏµ£¬±ãÓÚ¿ìËÙÕÒµ½ËùÐèÊý¾Ý¡£¶øpagerµÄÖ÷Òª×÷ÓþÍÊÇͨ¹ýOS½Ó¿ÚÔÚB-treeºÍDiskÖ®¼ä´«µÝÒ³Ãæ¡£

ǶÈëʽÊý¾Ý¿âSQLiteµÄÊý¾ÝÀàÐÍ

ÔÚSQLiteÊý¾Ý¿âÖУ¬²»½öÌṩÁË´¢´æ»ù±¾Êý¾ÝµÄ¹¦ÄÜ£¬¶øÇÒÌṩÁ˶Զþ½øÖÆÊý¾Ý´æ´¢µÄÄÜÁ¦£¬ÕâÑù¿ÉÒÔÈ·±£°Ñ²É¼¯µ½µÄũҵͼÏñÐÅÏ¢´æ·Åµ½Êý¾Ý¿âÖУ¬ÓÉÊý¾Ý¿âͳһ²Ù×÷ºÍ¹ÜÀí£¬ÔÚSQLiteÊý¾Ý¿âÖÐÌṩµÄ»ù±¾Êý¾ÝÀàÐͲ»µ«¿ÉÒÔ½øÐÐת»¯£¬»¹¿ÉÒÔ½øÐдóС±È½Ï¡£Êý¾ÝÀàÐÍÈçÏ£º

£¨1£©IntegerÕûÊýÖµ¡£ÓÐÕý¸ºÖ®·Ö£¬ËüÊÇÓÉ8¸ö×Ö½Ú£¨Bytes£©±íʾ¡£SQLiteÊý¾Ý¿â¿ÉÒÔ¸ù¾ÝÕûÊýÖµµÄ´óС×Ô¶¯¿ØÖÆÆäËùÕ¼×ֽڵĸöÊý¡£

£¨2£©RealʵÊýÀàÐÍ¡£ÔÚSQLiteÓÉ8¸ö×Ö½ÚÀ´±íʾ¡£

£¨3£©TextÎı¾×Ö·ûÊý¾ÝÀàÐÍ¡£ÓÃÀ´±£´æÎı¾ÐÅÏ¢¡£SQLiteÊý¾Ý¿âÖ§³Ö¶àÖÖ×Ö·û±àÂëÀàÐÍ£¬°üÀ¨UTF-8ºÍUTF-16¡£×Ö·û´®µÄ´óСÊÇûÓÐÏÞÖÆµÄ¡£

£¨4£©Blob¶þ½øÖÆÊý¾Ý¶ÔÏóÀàÐÍ¡£±£´æ¶þ½øÖÆÊý¾Ý£¬´óСûÓÐÏÞÖÆ¡£

£¨5£©Null¿ÕÀàÐÍ¡£Ò»¸ö¾ßÓÐNULL´æ´¢ÀàÐ͵ÄÖµ±ÈËùÓÐÆäËüÀàÐÍÖµ¶¼Ð¡¡£SQLiteÊý¾Ý¿â¶ÔNullÍêȫ֧³Ö¡£

SQLite Êý¾Ý¿â±¾ÉíÒ»¹²ÓÐ80¶à¸öAPIµ÷Óýӿڣ¬¹¦Äܼòµ¥µÄÊý¾Ý¿â³ÌÐòÓÃÈý¸ö½Ó¿ÚÍê³É: sqlite3_open(),sqlite3_exec(), ºÍ sqlite3_close()¡£ ÒªÊÇÏë¸üºÃµÄ¿ØÖÆÊý¾Ý¿âÒýÇæ,ʹÓÃsqlite3_prepare()º¯Êý°ÑSQLÓï¾ä±àÒë³É×Ö½ÚÂëÔÙͨ¹ýsqlite3_step()º¯ÊýÀ´Ö´ÐС£ÔÚSQLiteÖУ¬¾ø´ó¶àÊý½Ó¿ÚÌṩÁËUTF-8ºÍUTF-16Á½¸ö°æ±¾£¬´ó¶àÊý½Ó¿Ú³É¶Ô³öÏÖ¡£

´ËÍ⣬SQLiteÊý¾Ý¿âÖÐͬʱҲÌṩÁËÓû§¶ÔAPI½Ó¿ÚÀ©³äµÄ»úÖÆ¡£SQLiteµÄÀ©³äAPIÓÃÀ´Ö§³ÖÓû§¶¨ÒåµÄº¯Êý¡¢¾ÛºÏºÍÅÅÐò·¨¡£ÊµÏÖÒ»¸öÓû§×Ô¶¨ÒåµÄº¯Êý·ÖΪÁ½²½¡£Ê×ÏÈ£¬Ð´¾ä±ú¡£¾ä±úʵÏÖһЩÄãÏëͨ¹ýSQLÍê³ÉµÄ¹¦ÄÜ¡£È»ºó£¬×¢²á¾ä±ú¡£ÎªËüÌṩSQLÃû³Æ¡¢²ÎÊýµÄÊýÁ¿ºÍÒ»¸öÖ¸Ïò¾ä±úµÄÖ¸Õë¡£

Êý¾Ý¿â¿ØÖƺÍÓï¾äÖ´Ðз½Ê½

´ÓÊý¾Ý¿â´ò¿ª¿ªÊ¼£¬SQLite¾ÍҪΪsqlite3 *ÀàÐÍ×¼±¸ºÃÄڴ棬һֱµ½Êý¾Ý¿â¹Ø±ÕÕû¸ö¹ý³Ì¡£´ò¿ªÊý¾Ý¿âʱ£¬Õâ¸öÀàÐ͵ıäÁ¿Ö¸ÏòÄ㽫²Ù×÷µÄÊý¾Ý¿â¡£SQLiteÊý¾Ý¿âºÍ´ó¶àÊý¾Ý¿â²Ù×÷Ïàͬ£¬Æä¹ý³ÌÁ¬½Ó²¢´ò¿ªÊý¾Ý¿â¡¢´¦ÀíÊÂÎñºÍ¶Ï¿ªÁ¬½Ó²¢¹Ø±ÕÊý¾Ý¿â¹¹³É£º

1¡¢Á¬½Ó²¢´ò¿ªÊý¾Ý¿â¡£Ã¿¸öSQLiteÊý¾Ý¿â¶¼´æ´¢ÔÚµ¥¶ÀµÄ²Ù×÷ϵͳÎļþÖУ¬Êý¾Ý¿âÓëÎļþÒ»Ò»¶ÔÓ¦¡£Á¬½Ó²¢´ò¿ªÊý¾Ý¿âµÄ½Ó¿Úµ÷ÓÃΪsqlite3_open()£¬ËüÓÃÀ´´ò¿ªÒ»¸öÊý¾Ý¿âÎļþ£¬¸ÃÊý¾Ý¿âÎļþÖпÉÒÔ°üº¬Ðí¶à¸ö¹ØÏµ±í¡£¸Ã½Ó¿Úµ÷Óóɹ¦·µ»ØSQLITE_OK¡£

Êý¾Ý¿â´ò¿ª³É¹¦¡£SQLite»¹¿ÉÒÔ´´½¨ÄÚ´æÊý¾Ý¿â¡£Èç¹ûÄãʹÓÃ:memory:»òÒ»¸ö¿Õ×Ö·û´®×öÊý¾Ý¿âÃû£¬Êý¾Ý¿â½«ÔÚRAMÖд´½¨¡£ÄÚ´æÊý¾Ý¿â½«Ö»Äܱ»´´½¨ËüµÄÁ¬½ÓËù´æÈ¡£¬²»ÄÜÓëÆäËüÁ¬½Ó¹²Ïí¡£ÁíÍ⣬ÄÚ´æÊý¾Ý¿âÖ»ÄÜ´æ»îÓÚÁ¬½ÓÆÚ¼ä£¬Ò»µ©Á¬½Ó¹Ø±Õ£¬Êý¾Ý¿â¾Í½«´ÓÄÚ´æÖб»É¾³ý¡£

2¡¢´¦ÀíÊÂÎñ¡£SQLite ÊÇÖ§³ÖÊÂÎñ´¦ÀíµÄ¡£Ä¬ÈÏÇé¿öÏ£¬ÊÂÎñ×Ô¶¯Ìá½»£¬Ò²¾ÍÊÇÿһ¸öSQLÓï¾ä¶¼ÔÚÒ»¸ö¶ÀÁ¢µÄÊÂÎñÏÂÔËÐС£ÈκÎSQLÓï¾äÃüÁî¶¼ÔÚÊÂÎñÏÂÖ´ÐС£¿ÉÒÔͨ¹ýBegin¡¢CommitºÍRollbackµÈÃüÁîÊÖ¶¯Ìá½»ÊÂÎñ¡£È翪ʼ¡¢Ìá½»¡¢»Ø¹öÊÂÎñ¹ý³ÌÈçÏ£º

3¡¢Êý¾Ý¿âSQLÓï¾äÖ´ÐС£ÔÚSQLiteÊý¾Ý¿âÖÐÖ´ÐÐÊÂÎñ×î³£ÓõĽӿÚÊÇsqlite3_exec()£¬ÔÚÕâ¸öº¯ÊýÖÐÓÐÖ¸Ïòsqlite3_exec()µÄ»Øµ÷º¯ÊýµÄÖ¸Õë²ÎÊý¡£ÀýÈç×ö insert ²Ù×÷»ò×ö delete ²Ù×÷ʱ£¬¾ÍûÓбØÒªÊ¹Óûص÷£¬¸Ãº¯ÊýÖ¸Õë¿ÉÉèΪNULL¡£¶øµ±Äã×ö select ʱ£¬¾ÍҪʹÓøûص÷º¯Êý£¬ÒòΪ sqlite3 °ÑÊý¾Ý²é³öÀ´£¬µÃͨ¹ý»Øµ÷¸æËßÄã²é³öÁËʲôÊý¾Ý¡£

Êý¾Ý¿â¶ÔSQLÓï¾äµÄÖ´Ðз½Ê½ÔÚÏÂÒ»½ÚÏêÊö£¬»Øµ÷º¯ÊýµÄÐÎʽΪ£º

typedef int (*sqlite3_callback)(void*£¬int£¬char**£¬ char**)¡£

ÔÚSQLiteÊý¾Ý¿âÖÐÖ´ÐÐÊÂÎñµÄ½Ó¿ÚÒ²¿ÉÒÔÊÇsqlite3_get_table()£¬Ëü·µ»ØÒ»¸ö±í¸ñ»¯µÄ½á¹û¼¯¡£²»ÐèÒªÌṩ»Øµ÷º¯Êý¡£

4¡¢Ö´ÐÐSQLÓï¾ä¡£SQLÓï¾äµÄÖ´Ðйý³ÌÓÉÈý¸ö½×¶ÎÍê³É£¬ÏÂÃæ»áÏêÊö¡£

5¡¢¸ñʽ»¯£¨¶¯Ì¬¹¹Ô죩SQLÓï¾ä£¬ÀûÓÃsqlite½Ó¿Úº¯Êý¹¹ÔìSQLÓï¾ä£¬²¢µ÷ÓÃÏà¹Ø½Ó¿ÚÖ´ÐÐÓï¾ä¡£Ê×Ïȵ÷ÓÃsqlite3_mprintf()»òsqlite3_vprintf()¸ñʽ»¯SQLÓï¾ä£¬½Ó×ŵ÷ÓÃsqlite3_exec()Ö´ÐÐÓï¾ä£¬×îºóµ÷ÓÃsqlite3_free()ÊÍ·ÅÄÚ´æ×ÊÔ´¡£Ò²¿ÉÒÔµ÷ÓÃsqlite3_exec_printf()Íê³ÉÕû¸ö¹ý³Ì¡£

6¡¢¶Ï¿ªÁ¬½Ó²¢¹Ø±ÕÊý¾Ý¿â¡£Ç°ÃæÈç¹ûÓà sqlite3_open ¿ªÆôÁËÒ»¸öÊý¾Ý¿â£¬½áβʱ²»ÒªÍüÁË»¹Òª¹Ø±ÕËùÓи½¼ÓµÄÊý¾Ý¿âÎļþ¡£SQLiteÌṩ½Ó¿ÚΪSQLite3_close()¡£

SQLÓï¾äµÄÖ´ÐÐÔÚSQLiteÊý¾Ý¿âÖзÖÁ½ÖÖÇé¿ö£¬Ô¤±àÒë²éѯºÍ·â×°²éѯ¡£

Ô¤´¦Àí²éѯÊÇSQLiteÖ´ÐÐËùÓÐSQLÃüÁîµÄ·½Ê½£¬Ã¿Ò»¸ö½×¶Î¶¼¹ØÁªÓÚÓï¾ä¾ä±úµÄÒ»ÖÖ״̬(prepared¡¢activeºÍfinalized)¡£Pepared±íʾËùÓÐ×ÊÔ´¶¼ÒÑ·ÖÅ䣬¶ÔÓ¦½Ó¿Úº¯ÊýΪsqlite3_prepare()£¬Óï¾äÒѾ­¿ÉÒÔÖ´Ðе«»¹Ã»ÓÐÖ´ÐС£ÏÖÔÚ»¹Ã»ÓÐÉêÇëËø£¬Ò»Ö±µ½µ÷ÓÃsqlite3_step()ʱ²Å»áÉêÇëËø¡£Active״̬¿ªÊ¼ÓÚ¶Ôsqlite3_step()µÄµ÷Ó㬴ËʱÓï¾äÕýÔÚ±»Ö´Ðв¢ÓµÓÐijÖÖËø¡£FinalizedÒâζ×ÅÓï¾äÒѾ­±»¹Ø±ÕÇÒËùÓÐÏà¹Ø×ÊÔ´ÒѾ­±»ÊÍ·Å¡£

·â×°²éѯÊÇÔ¤´¦Àí²éѯµÄ·â×°¡£ÔÚʹÓÃÉϱȽϼòµ¥£¬ÔÊÐíÄãÔÚµ¥Ò»µÄº¯Êýµ÷ÓÃÖÐÖ´ÐÐSQLÃüÁî¡£Ò»¸öº¯ÊýÊÇsqlite3_exec()£¬ÌرðÊʺÏÖ´Ðв»ÐèÒª·µ»ØÊý¾ÝµÄ²éѯ¡£ÎªÁËÈòéѯ½á¹ûÊý¾Ý·µ»Ø£¬±ØÐëʵÏֻص÷º¯Êý£¬´«µÝ¸øsqlite3_exec()º¯Êý×÷Ϊ²ÎÊý¡£ÁíÒ»¸öÊÇsqlite3_get_table()£¬·µ»ØÒ»¸ö±í¸ñ»¯µÄ½á¹û¼¯¡£·â×°²éѯҲ¿ÉÒÔ¸ñʽ»¯SQLÓï¾äÖ®ºóÔÙÖ´ÐС£

¶þ½øÖÆÊý¾ÝµÄÊý¾Ý¿â´¦Àí¼¼Êõ

ÔÚũҵÐÅÏ¢²É¼¯Ç¶ÈëʽϵͳÖУ¬ÎªÁËÂú×ã¶Ô²É¼¯ÐÅÏ¢ÓÐЧµØÔÚÊý¾Ý¿âÖд¢´æ¡¢¹ÜÀí¡¢²éѯºÍ´«ÊäµÄÒªÇ󣬱ØÐëÒª¶ÔÊý¾Ý¿â´¦ÀíµÄ¹Ø¼ü¼¼Êõ½øÐÐÑо¿¡£ÕâЩ¼¼Êõ°üÀ¨£º¼Ç¼ºÍ×Ö·û´®´¦Àí¡¢×ֶδ¦Àí¡¢´íÎó¿ØÖÆ¡¢²Ù×÷¿ØÖƺÍÏ̴߳¦Àí¡£

1¡¢¼Ç¼ºÍ×Ö·û´®µÄ´¦ÀíÊÇÊý¾Ý¿âÖÐ×î³£ÓõĴ¦Àí·½Ê½¡£ÔÚÇ°ÃæÒ²Ìáµ½¹ýsqlite3_exec()ºÍsqlite3_get_table()º¯ÊýÊÇ´¦ÀíÊÂÎñºÍÖ´ÐÐSQLÓï¾ä½Ó¿Ú£¬Çø±ðÔÚÓÚsqlite3_exec()ÔÚ´¦Àí¼Ç¼£¬ÈçÖ´ÐÐSELECTʱ£¬ÒªµÃµ½´¦Àí½á¹ûÐèÌṩ»Øµ÷º¯Êý¡£Ìṩ»Øµ÷º¯ÊýµÄ×÷ÓþÍÊǵ±ÔÚÖ´ÐÐÍê¶Ô¼Ç¼µÄ²Ù×÷ºó£¬Èûص÷º¯Êý°´ÐèÒªµÃµ½´¦Àí½á¹û¡£×Ö·û´®´¦ÀíÖ÷ÒªÓÃÔÚ¶ÔSQLÓï¾äµÄ¸ñʽ»¯ÉÏ£¬ÔÚSQLiteÊý¾Ý¿âÖг£ÓýӿÚΪsqlite3_mprintf()»òsqlite3_vprintf()¡£

2¡¢×ֶδ¦ÀíÊÇÔڼǼ²Ù×÷µÄ»ù´¡ÉϽøÐеġ£ÔÚSQLiteÖÐÌṩÁËÒÔ¶Ô×ֶβÙ×÷µÄº¯Êý½Ó¿Ú£¬ÆäÌØµãÊÇsqlite3_column_¿ªÍ·¡£ÕâЩ½Ó¿Ú¿ÉÒÔ»ñµÃ×Ö¶ÎÃû³Æ¡¢×ֶεĴ洢ÀàÐͺÍ×ֶεÄÖµµÈÐÅÏ¢¡£Èç»ñµÃÒ»¸ö×ֶεÄÃû³Æ¡¢´¢´æÀàÐͺÍÉùÃ÷ÀàÐ͵ĺ¯Êýµ÷ÓÃÈçÏ£º

3¡¢SQLiteÊý¾Ý¿âÔ¤¶¨ÒåÁËÐí¶à´íÎó´úÂëºêÒÔ·½±ã³ÌÐòÉè¼Æ´íÎó´¦ÀíµÄÓ¦Ó᣺ܶàAPI½Ó¿Úº¯ÊýµÄ·µ»ØÀàÐÍÊÇÕûÐΣ¬Õâ±íʾ·µ»Ø´íÎóÂ룬ËùÒÔÔÚ½Ó¿Úµ÷ÓÃÖпÉÒÔ¸ù¾Ý·µ»ØÂë½øÐдíÎó´¦Àí£¬¿ÉÒÔʹÓú¯Êýsqlite3_errmsg()»ñµÃ¸½¼ÓµÄ´íÎóÐÅÏ¢¡£

ͼÏñÊý¾ÝÔÚsqliteÊý¾Ý¿âÖÐÊǰ´ÕÕ¶þ½øÖÆÐÎʽ´æ·ÅµÄ¡£ ²Ù×÷¶þ½øÖÆÊý¾ÝÐèÒªÓÃÒ»¸ö¸¨ÖúµÄÊý¾ÝÀàÐÍ£ºsqlite3_stmt * ¡£ËüÊÇÒ»¸öÒѾ­°ÑSQLÓï¾ä½øÐÐÁ˽âÎö£¬²¢ÓÃsqlite×Ô¼º±ê¼Ç¼Ç¼µÄÄÚ²¿Êý¾Ý½á¹¹À´±íʾµÄSQLÓï¾ä¡£ÕýÒòΪÕâ¸ö½á¹¹ÒѾ­±»½âÎöÁË£¬ËùÒÔÄã¿ÉÒÔÍùÕâ¸öÓï¾äÀï²åÈë¶þ½øÖÆÊý¾Ý¡£

°Ñ¶þ½øÖÆÊý¾Ý²åµ½ sqlite3_stmt ½á¹¹µÄ¹ý³Ì£¬±ØÐëÓÃsqlite ÌṩµÄº¯ÊýÀ´²åÈë¡£SQLiteÊý¾Ý¿âÌṩÁËÒ»ÖÖͨÅä·û»úÖÆÓÃÀ´±íʾSQLÓï¾äÖв»È·¶¨µÄ×Ö·ûÖµ£¬ÕâЩͨÅä·ûÈ磿¡¢aaa¡¢nnnµÈ¡£×öÕâЩͨÅä·ûËù´ú±íµÄÖµÔÚsqlite3_bind_¿ªÍ·µÄ½Ó¿Úº¯ÊýÖб»Ìî³ä£¬ÔÚSQLiteÊý¾Ý¿âÖÐÌṩÁ˺ܶàÒÔsqlite3_bind_¿ªÍ·µÄ½Ó¿ÚÓÃÀ´¸øSQLÉùÃ÷ÖеÄͨÅä·û¸³Öµ¡£

¶þ½øÖÆÊý¾ÝµÄ´æ´¢Ïà¶Ô±È½Ï¸´ÔÓÒ»µã£¬µ«´ÓÊý¾Ý¿â¶Ô¶þ½øÖÆÊý¾ÝµÄ²Ù×÷À´¿´£¬Ö÷Òª·ÖΪÊý¾ÝдÈëºÍÊý¾Ý¶Á³ö¡£

1¡¢Êý¾ÝдÈëÊÇÖ¸½«¶þ½øÖÆÊý¾Ýдµ½Êý¾Ý¿âÖУ¬ÈÃÊý¾Ý¿âͳһ¹ÜÀí±£´æ¡£ÔÚSQLiteÖУ¬¶þ½øÖÆÊý¾Ýʱ±£´æÔÚBlobÊý¾ÝÀàÐÍÖеġ£Êý¾ÝµÄдÈë²½ÖèÊÇ£º´´½¨Êý¾Ý¿â¹ØÏµ±í£¬¹¹Ô캬ÓÐͨÅä·ûµÄ²åÈë¶þ½øÖÆÊý¾ÝµÄSQLÓï¾ä£¬È»ºó°Ñ¸ÃÓï¾ä½âÎöµ½sqlite3_stmt ½á¹¹ÖС£È磺

µ÷Óýӿں¯Êýsqlite3_bind_blob()¸øSQLÉêÃ÷µÄͨÅä·û¸³Öµ£¬¸Ãº¯ÊýµÚ¶þ¸ö²ÎÊýΪͨÅä·ûµÄË÷ÒýºÅ£¬´Ó1¿ªÊ¼£¬Óжà¸öͨÅä·ûʱ£¬Òª¶à´Îµ÷Óøú¯Êý¡£µÚÈý¸ö²ÎÊýΪ¶þ½øÖÆÊý¾Ý¿ªÊ¼Ö¸Õ룬µÚËĸö²ÎÊýΪ¶þ½øÖÆÊý¾Ý³¤¶È¡£

sqlite3_bind_blob( stat, 1, pdata, (int)(length_data), NULL );

Ö®ºó£¬¶þ½øÖÆÊý¾Ý´æ·Åµ½ÁËSQLÓï¾ä¡£ÏÖÔÚÐèÒªµ÷ÓÃsqlite3_step()°Ñsqlite3_stmt ½á¹¹±íʾµÄSQLÓï¾ä¾Í±»Ð´µ½ÁËÊý¾Ý¿âÀï¡£×îºóµ÷ÓÃsqlite3_finalize()ÊÍ·Åsqlite3_stmt ½á¹¹µÄÄÚ´æ¡£

2¡¢Êý¾ÝµÄ¶Á³öÊǰѶþ½øÖÆÊý¾Ý´ÓÊý¾Ý¿â°´ÕռǼ¶Á³öµÄ¹ý³Ì¡£¸Ã¹ý³ÌÔÚÑ­»·ÖÐÍê³É£¬ÔÚũҵÐÅÏ¢²É¼¯ÏµÍ³ÖпÉÒÔ½øÐÐͼÏñÐÅÏ¢µÄÏÔʾºÍÎÞÏß´«Êä¡£×¼±¸sqlite3_stmt* ½á¹¹£¬È»ºó°Ñ¶ÁÊý¾Ý¿âµÄSQLÓï¾ä½âÎöµ½sqlite3_stmt ½á¹¹ÖС£

sqlite3_prepare( db, ¡°select * from tab¡±, -1,&stat, 0 )£»

½Ó×Å¿ªÊ¼Ñ­»·²éѯÊý¾Ý£¬sqlite3_step( )·µ»ØSQLITE_ROW±íʾ¼Ç¼ûÓнáÊø£¬·ñÔò±íʾ½áÊø¡£ÔÚÑ­»·ÖпɻñÈ¡IDÖµ¡¢¶þ½øÖÆÊý¾Ý¡¢¶þ½øÖÆÊý¾Ý³¤¶ÈºÍÊý¾Ý´¦Àí£¬Ö®ºóÊÍ·Åsqlite3_stmt* ½á¹¹ÄÚ´æ¡£

SQLiteµÄÌØÐÔ»¹ÌåÏÖÔÚËü¼ÈÊÇÒ»¸öÊý¾Ý¿â£¬Ò»¸ö³ÌÐò¿â£¬Ò»¸öÃüÁîÐй¤¾ß£¬Ò²ÊÇÒ»¸öѧϰ¹ØÏµÐÍÊý¾Ý¿âµÄºÜºÃµÄ¹¤¾ß¡£È·ÊµÓкܶà;¾¶¿ÉÒÔ°ÑËüʹÓõ½ÄÚǶ»·¾³¡¢ÍøÕ¾¡¢²Ù×÷ϵͳ·þÎñ¡¢½Å±¾ÓïÑÔºÍÓ¦ÓóÌÐò¡£¶ÔÓÚ³ÌÐòÔ±À´Ëµ£¬SQLite¾ÍÏñÒ»¸öÊý¾Ý´«ËÍ´ø£¬ÌṩÁËÒ»ÖÖ·½±ãµÄ½«Ó¦ÓóÌÐò°ó¶¨µÄÊý¾ÝµÄ·½·¨¡£

   
2436 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤