ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/9/9 21:57:50ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
SQLite3·µ»ØÖµµÄÒâ˼£º
#define SQLITE_OK 0 /* Successful result */ /* beginning-of-error-codes */
#define SQLITE_ERROR 1 /* SQL error or missing database */ #define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */ #define SQLITE_PERM 3 /* Access permission denied */
#define SQLITE_ABORT 4 /* Callback routine requested an abort */ #define SQLITE_BUSY 5 /* The database file is locked */
#define SQLITE_LOCKED 6 /* A table in the database is locked */ #define SQLITE_NOMEM 7 /* A malloc() failed */
#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/ #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */ #define SQLITE_CORRUPT 11 /* The database disk image is malformed */ #define SQLITE_NOTFOUND 12 /* Unknown opcode in sqlite3_file_control() */ #define SQLITE_FULL 13 /* Insertion failed because database is full */ #define SQLITE_CANTOPEN 14 /* Unable to open the database file */ #define SQLITE_PROTOCOL 15 /* Database lock protocol error */ #define SQLITE_EMPTY 16 /* Database is empty */
#define SQLITE_SCHEMA 17 /* The database schema changed */ #define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */ #define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */ #define SQLITE_MISMATCH 20 /* Data type mismatch */ #define SQLITE_MISUSE 21 /* Library used incorrectly */
#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ #define SQLITE_AUTH 23 /* Authorization denied */
#define SQLITE_FORMAT 24 /* Auxiliary database format error */
#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */ #define SQLITE_NOTADB 26 /* File opened that is not a database file */ #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */ /* end-of-error-codes */
¹ØÓÚÊÂÎï
int result;
result = sqlite3_exec( db, \¿ªÊ¼Ò»¸öÊÂÎñ result = sqlite3_exec( db, \Ìá½»ÊÂÎñ result = sqlite3_exec( db, \»Ø¹öÊÂÎñ
¹ØÓÚSQLite3ºÍ±ê×¼sqlÖ®¼äµÄ²îÒìºÍÓ÷¨£¨²»È«£©
1. sqlÓï¾äÖв»ÄÜʹÓÃtop¹Ø¼ü×Ö£¬±ÈÈ磺
SELECT TOP x * FROM table_name WHERE .... ORDER BY .... DESC
¼ìË÷µ½µÄ¼Ç¼°´½µÐòÅÅ£¬È¡ÆäǰxÌõ¼Ç¼¡£ÔÚsqliteÖÐÓ¦¸ÃÕâÑùд£º SELECT * FROM table_name WHERE .... ORDER BY .... DESC LIMIT 0,x 2. ¿½±´±íÊý¾Ý£¬¿½±´±íbÊý¾Ýµ½a
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b
3. ±í¸üÃû£ºALTER TABLE table_name RENAME TO new_table_name
4. ²»ÄÜÖ±½ÓÐ޸ıí×ֶΣ¬°üÀ¨ÀàÐÍ£¬ÒÔ¼°Ä¬ÈÏÖµ,±ÈÈçɾ³ýÒ»¸ö×ֶΣ¬¿ÉÒÔÏȽ«Õâ¸ö±í Àï³ýȥҪɾ³ý×Ö¶ÎµÄÆäËûÊý¾Ý¶¼¿½±´µÄбíÀɾ³ýÔÀ´Õâ¸ö±í£¬½«Ð±í¸üÃûÎªÔ À´µÄ±íÃû
(1)CREATE TABLE table_name_new AS SELECT field1£¬field2£¬field3.... FROM table_name_old (2)DROP TABLE table_name_old
(3)ALTER TABLE table_name_old RENAME TO table_name_new 5. Íù±íÀïÔö¼Ó×Ö¶Îʱ£¬Ö»ÄÜÒ»¸ö¸ö¼Ó£º
ALTER TABLE table_name ADD field_name field_type,Èç¹û×Ö¶ÎÊÇNOT NULLÄÇô
ALTER TABLE table_name ADD field_name field_type NOT NULLÕâÑùдÊDz»¶ÔµÄ£¬sqliteÈç¹ûÊÇnot null ÄÇôÄã¾ÍÓ¦¸Ã¸ø¶¨Ò»¸öĬÈÏÖµ ËùÒÔÓ¦¸ÃÕâÑùд£ºALTER TABLE table_name ADD field_name field_type DEFAULT default_value 6 Èç¹ûsqlÓï¾äÖÐÓÐ×Ö·û´®£¬Ó¦µ±¼Óµ¥ÒýºÅ£¬ÀýÈ磺WHERE field_name1 = '×Ö·û´®'
¹ØÓÚSQLite3µÄ¼òµ¥Ê¹ÓÃ
ÏÂÃæÕâЩ·½·¨²ÎÊýûÓÐÈ«²¿Áгö
¼ÙÈçÎÒÃÇÒª¸üÐÂÒ»¸ö±í£¬µ«ÊÇÒªSETµÄ×ֶθöÊýºÍÄÚÈݲ¢²»È·¶¨£¬»òÕßÒª¸üеÄÊÇblobÀàÐ͵Ä×ֶΣ¬Õâʱ¾ÍÐèÒªÓõ½°ó¶¨£¬ÀýÈ磺
UPDATE table_name SET field1 = ?£¬field2 = ?... WHERE field = 'Æ¥Åä×Ö¶Î',ÎʺŴ¦¾ÍÊÇÒª°ó¶¨µÄÄÚÈÝ¡£Õâ¸öÔÚ±ê×¼sqlÒ²ÓÐÓõ½
sqlite3_stmt* stmt Õâ¸östmt¾Í¹á´©ÁËÕû¸ösqlÓï¾äµÄÖ´Ðйý³Ì
Ò»£®ÈçºÎʹÓÃ
1. int rc = sqlite3_prepare16_v2(stmt£¬sql)×¼±¸sqlÓï¾ä£¬Ëû¿ª±ÙÒ»¶Î»º´æ£¬ÓÃÀ´±£´æºÍ¼Ç ¼׼±¸ºÃµÄsqlÓï¾ä£¬ËùÒÔËüÒ»µ©³öÏÖ£¬ÄÇôsqlite3_finalizeÒ²±ØÐëʹÓã¬ÓÃÀ´ÔÚ×îºóÊÍ·ÅÕâ¿éÄڴ棬ÕýÈ·Ö´Ðк󷵻ØÖµrc = 0£¬È»ºóµÃµ½Ò»¸östmtÓÃÀ´½øÐÐÏÂÒ»²½
(1) Èç¹ûÊÇdoubleÀàÐÍ×ֶΣ¬ÕâÑù°ó¶¨£ºrc = sqlite3_bind_double(stmt, i, val); iÖµ´ú±í°ó¶¨ µÄÊǵڼ¸¸öÎʺÅ
(2) ×Ö·û´®ÀàÐÍ×ֶΣºrc = sqlite3_bind_text16(stmt, i, bstrVal, bytes, SQLITE_TRANSIENT);²Î
ÊýµÄÒâ˼²»¶®£¬¿ÉÒÔ×Ô¼º²é
(3)Èç¹ûÄÚÈÝΪ¿Õ£ºsqlite3_bind_null (stmt, i);
(4)blobÀàÐÍ£ºsqlite3_bind_blob(stmt,i,buff,dwSize,SQLITE_TRANSIENT);»¹ÓÐÆäËûµÄÀàÐÍ ¾Í²»Ò»Ò»ÁоÙÁË£¬×ÊÁϺܶà
2. int rc = sqlite3_step(stmt)£¬°ó¶¨Íê±Ïºó£¬ÓÃÕâ¸öÖ´ÐÐsqlÓï¾ä£¬¼ÙÈçÕâÊÇÒ»¸öupdateÓï ¾ä£¬ÕýÈ·Ö´Ðк󷵻ØÖµÎªrc = 100£¬Èç¹ûÊÇÒ»¸öselectÓï¾äµÄ»°£¬Ö´Ðкóstmt±êÖ¾µÄ¾ÍÊǵÚÒ»Ìõsql¼ìË÷¼Ç¼£¬ÔÚÖ´ÐÐÒ»´Îsqlite3_stepºó¿ÉµÃµ½µÚ¶þÌõ¼Ç¼£¬ÒÀ´Î¿ÉÒÔ±éÀúÍêÕû¸ö¼Ç¼¼¯£¬µ½×îºóÒ»Ìõ±éÀúÍêʱ£¬·µ»ØÖµrc = 101±íʾÒѾû¼Ç¼ÁË
3. int rc = sqlite3_reset(stmt);µ±Ê¹ÓÃsqlite3_resetʱ£¬¾ÍÊǽ«stmtÓÖ»Ö¸´µ½prepareÖ´ÐÐ
ºóµÄ״̬£¬ÒòΪƵ·±Ê¹ÓÃprepareЧÂʲ»¸ß£¬£¬ËùÒÔÓÃresetÖØ¸´Ê¹ÓÃÕâ¿éÄÚ´æ»áʹ ЧÂÊ´ó´óÌá¸ß
4. ÔõôȡµÃijÌõ¼Ç¼µÄij¸ö×Ö¶ÎֵĨ£¬ÄǾÍÊÇͨ¹ýsqlite3_column_blob£¬
sqlite3_column_int,sqlite3_column_double,sqlite3_column_text16µÈÀ´È¡µÃ¡£ÀýÈç
sqlite3_column_int(stmt,i)£¬´Ëʱstmt¶ÔÓ¦µÄÊǵÚnÌõ¼Ç¼£¬i¶ÔÓ¦µÄÊǵÚi¸ö×ֶΣ¬Õâ¸ö ·½·¨µÄ·µ»ØÖµ¾ÍÊÇÈ¡µÃ×Ö¶ÎÖµ¡£ÖÁÓÚblob×ֶοÉÄÜÓÐʱ»á±È½Ï¸´ÔÓ 5. sqlite3_finalize(stmt) Õâ¸ö¾Í²»ÓÃ˵ÁË
¶þ£®Ð§ÂÊÎÊÌâ
sqlite_exec()Ö±½ÓÖ´ÐУ¬¿ÉÓÃÀ´´¦ÀíÖ±½Ó¾ÍÄÜÖ´ÐеÄsqlÓï¾ä£¬ËûÊÇÉÏÃæÄÇһϵÁеķâ×°£¬ ËùÒÔËûµÄЧÂʲ¢²»±ÈprepareÄÇÖÖ·½Ê½¸ß¡£ÔÚ´ËÖ»ÊǼòµ¥µÄ½«ÎÒÓõ½µÄ½²ÊöÏ£¬ÃâµÃ´ó¼ÒÔÚÓõÄʱºò×ßÌ«¶àÍä·£¬ÎÒÔÚ¸Õ¿ªÊ¼¶ÔÕâЩһÎÞËùÖªµÄʱºò×ßÁ˺ܶàÍä·¡£