SQLite3¼òµ¥Ê¹ÓõÄÏê½â ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 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ÄÇÖÖ·½Ê½¸ß¡£ÔÚ´ËÖ»ÊǼòµ¥µÄ½«ÎÒÓõ½µÄ½²ÊöÏ£¬ÃâµÃ´ó¼ÒÔÚÓõÄʱºò×ßÌ«¶àÍä·£¬ÎÒÔÚ¸Õ¿ªÊ¼¶ÔÕâЩһÎÞËùÖªµÄʱºò×ßÁ˺ܶàÍä·¡£