|
ÇöÀçÀ§Ä¡ : ¹Ì´Ï»çÀÌÆ®> SQLite> Document> article_article_SQLite_ÇÁ·Î±×·¡¹Ö
Sqlite ÇÁ·Î±×·¡¹ÖSqlite ÇÁ·Î±×·¡¹Ö| 고친 과정 |
|---|
| 고침 0.9 | 2004³â 2¿ù 16ÀÏ 8½Ã | | | Âü°í¹®Çå¹× »çÀÌÆ® Ãß°¡ | | 고침 0.8 | 2004³â 1¿ù 09ÀÏ 20½Ã | | | ÃÖÃÊ ¹®¼ÀÛ¼º |
1. ¼Ò°³ Áö±Ý±îÁö Oracle, Mysql, Postgresql °ú °°Àº Å« ±Ô¸ðÀÇ DBÇÁ·Î±×·¡¹ÖÀ»
ÇØ¿ÔÀ¸¸ç ÀÛÀº ±Ô¸ð¿¡¼ °£´ÜÇÏ°Ô »ç¿ëÇϱâ À§ÇÑ ¿ëµµ·Î gdbm °ú °°Àº
¶óÀ̺귯¸®¸¦ »ç¿ëÇß¾ú´Ù.
À̵éÀÇ ¹®Á¦´Â Oracle, Mysql, PostgresqlÀº Àû´çÇÑ ±â´ÉÀ» Áö¿øÇϱâ
À§Çؼ Áö³ªÄ¡°Ô ¹«°Ì´Ù´Â Á¡À̰í, gdbm°ú °°Àº °æ¿ì ¸Å¿ì °¡º±°í
°£´ÜÇϱâ´Â ÇÏÁö¸¸ ±â´ÉÀÌ ³Ê¹« Á¦ÇÑÀûÀ̰í
SQL¹®¹ýÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù.
±×·¯´øÁß Sqlite¸¦ ¾Ë°Ô µÇ¾ú´Ù. À¥ÇÁ·Î±×·¡¹Öµµ °âÇÏ´Ùº¸´Ï Á»´õ
°¡º¿î DBµµ±¸¸¦ ã¾Æ Çì¸Þ´øÁß ¹ß°ßÇß´Ù.
ÀÌ ¹®¼´Â SqliteÀÇ ¼³Ä¡¿Í ÇÁ·Î±×·¡¹Ö Ȱ¿ë¹æ¾Èµî¿¡ ´ëÇÑ ³»¿ëÀ» ´ã°í ÀÖ´Ù.
¹®¼´Â Linux OS¸¦ ±âÁØÀ¸·Î ÀÛ¼ºµÇ¾ú´Ù. Windowsȯ°æ¿¡¼ÀÇ SQLiteÀÇ ¼³Ä¡¿¡
´ëÇÑ ÈùÆ®¸¦ ¾ò°í ½Í´Ù¸é SWLite Windows¸¦ Âü°íÇϱ⠹ٶõ´Ù.
¶ÇÇÑ SQLiteÀÀ¿ë ÇÁ·ÎÁ§Æ®µµ ÀÖÀ¸´Ï ÀÌ ±ÛÀ» ÀÐÀºÈÄ °ü½ÉÀÌ »ý°å´Ù¸é
ÇѹøÂë ã¾ÆÁÖ±æ ¹Ù¶õ´Ù.
SQLiteDBMS ÇÁ·ÎÁ§Æ®·Î °¡±â
2. Sqlite ÇöÀç ½ÃÁ¡¿¡¼ ÃֽйöÁ¯ÀÎ sqlite-2.8.9¸¦ ±âÁØÀ¸·Î ÇÑ´Ù.
2.1. SqliteÀÇ Æ¯Â¡ SQL92ÀÇ ´ëºÎºÐÀ» Áö¿øÇÑ´Ù. ´ÙÀ½Àº Áö¿øÇÏÁö ¾Ê´Â ¸î °¡Áö ±â´ÉµéÀÌ´Ù.
´ÜÀÏ ÆÄÀÏ¿¡ µ¥ÀÌÅͺ£À̽ºÀÇ ¸ðµç°ÍÀ» Æ÷ÇÔÇÑ´Ù.
ACID(Atomic, Consistent, Isolate, Durable) º¸Áõ
byte order¿¡ °ü°è¾øÀÌ µ¥ÀÌÅÍ ÆÄÀÏÀÇ °øÀ¯°¡ °¡´É
2Å×¶ó¹ÙÀÌÆ® (2^41)Å©±âÀÇ µ¥ÀÌÅÍ ÆÄÀÏ »ý¼ºÁö¿ø
È¿À²ÀûÀÎ ¸Þ¸ð¸® »ç¿ë : 25k¶óÀÎÁ¤µµÀÇ CÄÚµå·Î ÀÌ·ç¾îÁ³´Ù.
¸¹Àº ÀϹÝÀûÀÎ ¸í·ÉÀ» ½ÇÇàÇϴµ¥ PostgreSql°ú Mysqlº¸´Ù ÃÖ¼Ò
2¹èÀÌ»ó ¸í·É¿¡ µû¶ó¼ 10-20¹è ÀÌ»ó ºü¸£´Ù.
ÇϳªÀÇ ±¸Á¶Ã¼¿Í 3°³ÀÇ ÇÔ¼ö¸¸ »ç¿ëÇÏ´Â Á¤µµ·Î sqlite¸¦
»ç¿ëÇÏ´Â C/C++ Äڵ带 ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù.
TCL, Perl, PHP, .Net, Java, Python, SmallTalk, RubyµîÀÇ ´Ù¾çÇÑ ¾ð¾îÁö¿ø
´Ù¸¥ ¶óÀ̺귯¸®µîÀÇ µµ¿ò¾øÀÌ ÀÛµ¿µÈ´Ù.
libsqlite.so¿Í sqlite 2°³ÀÇ ÆÄÀÏÀ̸é ÀÛµ¿ ȯ°æÀ» ¸¸µé ¼ö ÀÖ´Ù.
Public Domain ¶óÀ̼¾½º¸¦ °¡Áø´Ù.
sqlite´Â ¼¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨À» Áö¿øÇÏ´Â RDBMS°¡ ¾Æ´Ï´Ù.
·ÎÄÿ¡¼¸¸ »ç¿ë°¡´ÉÇϸç ÀÎÅͳÝÀÀ¿ëÀ» ¿øÇÑ´Ù¸é º°µµÀÇ ¼¹ö
ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß ÇÑ´Ù.
2.2. ¼³Ä¡Çϱâ SQLite ȨÆäÀÌÁö¿¡¼
´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù. ÇöÀç(2003/1/08) sqlite-2.8.9.tar.gz ¹öÁ¯ÀÌ ÃֽŹöÁ¯ÀÌ´Ù.
´Ù¿î·Îµå ¹Þ¾Æ¼ ¾ÐÃà±îÁö Ç®°í º¸´Ï 4MÁ¤µµ µÇ´Â ÀÛÀº Å©±â¿´´Ù.
oracleÀº ¸»ÇÒ °Íµµ ¾ø°í ¼ö½Ê¸Þ°¡ÀÇ Å©±â¸¦ °¡Áö´Â postgresqlÀ̳ª
mysql¿¡ ºñÇØ¼µµ ¸Å¿ì ÀÛÀº Å©±âÀÌ´Ù.
rpmµµ ÁغñµÇ¾î ÀÖ±â´Â Çѵ¥, ¼¹ö ÇÁ·Î±×·¥µéÀº ¹«Á¶°Ç ÄÄÆÄÀÏÇØ¼ ¼³Ä¡ÇØ¾ß ÇÏ´Â
¼º°ÝÀ̶ó tarballÀ» ¹Þ¾Æ¼ ÄÄÆÄÀÏ ÈÄ ¼³Ä¡Çϱâ·Î Çß´Ù.
´ÙÀ½Àº ÇÊÀÚ°¡ »ç¿ëÁßÀÎ ¸®´ª½º¹Ú½ºÀÇ »ç¾çÀÌ´Ù.
표 1. ½Ã½ºÅÛ »ç¾ç | OS | Linux | Kernel 2.6.0 | | ÄÄÆÄÀÏ·¯ | gcc | 2.96 | | cpu | Intel 800MHZ | ¾÷±×·¹ÀÌµå ½ÃŰ°í ½Í´Ù. |
¼³Ä¡´Â ¸Å¿ì °£´ÜÇÏ´Ù.
# wget http://www.hwaci.com/sw/sqlite/sqlite-2.8.9.tar.gz
# mv sqlite-2.8.9.tar.gz /usr/src
# tar -xvzf sqlite-2.8.9.tar.gz
# cd sqlite
# ./configure
# make
# make install
|
¿É¼Ç¾øÀÌ ¼³Ä¡ÇßÀ» °æ¿ì /usr/local ¹Ø¿¡ ÀÚ¸®Àâ°Ô µÈ´Ù. À̰ɷΠ¼³Ä¡ ³¡ÀÌ´Ù.
3. Sqlite °£´Ü ¿î¿ë3.1. DB »ý¼º¹× °£´ÜÇÑ ³»ºÎ¸í·É¾îµé sqlite [dbname] À¸·Î °£´ÜÇÏ°Ô »ý¼ºÇÒ ¼ö ÀÖ´Ù.
µ¿ÀÏÇÑ À̸§ÀÌ Á¸ÀçÇÏ¸é ¿°í ±×·¸Áö ¾Ê´Ù¸é »õ·Î »ý¼ºÇÑ´Ù.
# sqlite test.db
SQLite version 2.8.9
Enter ".help" for instructions
sqlite>
|
±×´ÙÀ½ ºÎÅÍ´Â ¾Ë°í ÀÖ´Â Sql query¸¦ ÀÌ¿ëÇØ¼
ÇÊ¿äÇÑ ÀÛ¾÷À» ÇÏ¸é µÈ´Ù.
sqlite> create table test(name char(80), age int);
sqlite> insert into test values("yundream", 19);
sqlite> insert into test values("hello world", 29);
sqlite> select * from test;
yundream|19
hello world|29
|
³»ºÎ¸í·É¾î¿Í °ü·ÃµÈ µµ¿ò¸»Àº '''.help'''¸¦ ÀÔ·ÂÇÏ´Â Á¤µµ·Î °£´ÜÈ÷ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
.databases : ÇöÀç ÀÛ¾÷ÁßÀÎ DBÆÄÀϰú °ü·ÃµÈ ´Ù¸¥ ÆÄÀÏµé ¸ñ·Ï Ãâ·Â
.echo ON|OFF : ¸í·É¾î¸¦ ¹ÝÇâ ÇÒ°ÇÁö ¿©ºÎ
.exit : ÇÁ·Î±×·¥ Á¾·á
.help : µµ¿ò¸»
.schema ?TABLE? : Å×ÀÌºí ±¸Á¶
.show : ÇöÀç ÇÁ·Î±×·¥ ¼³Á¤°ªÀ» º¸¿©ÁØ´Ù.
.read FILENAME : FILENAMEÀ¸·Î ºÎÅÍ SQLÀ» ½ÇÇàÇÑ´Ù.
.output FILENAME : Ãâ·ÂÀ» FILENAMEÀ¸·Î º¸³¿
.output stdout : Ãâ·ÁÀ» ȸéÀ¸·Î º¸³¿(±âº» °ª)
.output stdout : Ãâ·ÁÀ» ȸéÀ¸·Î º¸³¿(±âº» °ª)
4. C/C++ Interface sqlite´Â ¸Å¿ì ½±°Ô °ü·Ã ¾ÖÇø®ÄÉÀ̼ÇÀ» Á¦ÀÛÇÒ ¼ö ÀÖµµ·Ï µðÀÚÀεǾî ÀÖ´Ù.
¿©±â¿¡¼´Â sqlite C/C++ÇÁ·Î±×·¡¹Ö ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸°Ú´Ù.
4.1. ÇÙ½É API sqlite´Â 3°³ÀÇ ÇÙ½É ÇÔ¼ö¿Í ÇϳªÀÇ ÀڷᱸÁ¶¸¦ Á¦°øÇÑ´Ù.
À̿ܿ¡µµ ¸î°¡Áö ¸®Åϰª°ú »ó¼öµéÀ» °¡Áö°í ÀÖ´Ù.
typedef struct sqlite sqlite;
#define SQLITE_OK
sqlite *sqlite_open(const char *dbname, int mode, char **errmsg);
void sqlite_close(sqlite *db);
int sqlite_exec
(
sqlite *db,
char *sql,
int (*xCallback)(void*,int,char**,char**),
void *pArg,
char **errmsg
);
|
À§ÀÇ ³»¿ë¸¸ ¼÷ÁöÇÏ´Â Á¤µµ·Î C,C++ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Ù.
4.2. DB ¿±â sqlite *sqlite_open(const char *dbname, int mode, char **errmsg);
|
sqlite_open ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ SQLite DB¸¦ ¿°Å³ª »õ·Î¿î DB¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.
ù¹øÂ° ÀÎÀÚ´Â DBÀ̸§ÀÌ´Ù. µÎ¹øÂ° ÀÎÀÚ´Â ÇöÀç »ç¿ëÇÏÁö ¾Ê´Â´Ù.
DB¸¦ ¿©´Â Áß¿¡ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù¸é errmsg¿¡ ¿¡·¯¸Þ½ÃÁö¸¦ ä¿ì°Ô µÈ´Ù. ¿¡·¯°¡
¹ß»ýÇÏÁö ¾Ê¾Ò´Ù¸é NULLÀ» °¡¸®Å²´Ù.
4.3. DB´Ý±â sqlite_close()ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù. ÀÎÀڷδ sqlite_open()À¸·Î »ý¼ºµÈ sqlite
±¸Á¶Ã¼ Æ÷ÀÎÅͰ¡ µé¾î°£´Ù. sqlite_close()¸¦ È£ÃâÇßÀ» ¶§ Æ®·£Àè¼Ç(transaction)ÀÌ
Ȱ¼ºÈ µÇ¾î ÀÖ´Â »óŶó¸é ÀÌ Æ®·£Àè¼ÇÀº rolled back ÇÏ°Ô µÈ´Ù.
4.4. SQL ½ÇÇà sqlite_exec()¸¦ ÀÌ¿ëÇØ¼ SQLÄõ¸®¿Í °¢Á¾ ¸í·ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â 5°³ÀÇ
ÀÎÀÚ¸¦ °¡Áø´Ù.
sqlite_open()¿¡ ÀÇÇØ¼ ¸¸µé¾îÁø sqlite±¸Á¶Ã¼ Æ÷ÀÎÅÍ´Ù.
sql Äõ¸®¿Í sql ¸í·ÉÀ» À§ÇÑ ¹®ÀÚ¿ÀÌ µé¾î°£´Ù. ÀÌ ¹®ÀÚ¿Àº
null·Î ³¡³´Ù.
ÄݹéÇÔ¼ö·Î½á Äõ¸®ÀÇ °á°ú¸¦ ó¸®Çϱâ À§Çؼ È£Ã⠵ȴÙ. NULL
À̶ó¸é ¾Æ¹«Àϵµ ÇÏÁö ¾Ê°Ô µÈ´Ù.
ÄݹéÇÔ¼ö·Î ³Ñ°ÜÁÙ ÀÎÀÚÀÇ Ã³À½À» °¡¸£Å°´Â Æ÷ÀÎÅÍ´Ù.
¿¡·¯¸Þ½ÃÁö¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â malloc()µîÀ» ÀÌ¿ëÇØ¼
ÇÒ´çµÈ °ø°£¿¡ ¾º¿©Áö¸ç ÇÔ¼ö°¡ Á¾·áµÇ¸é free() µÈ´Ù. NULLÀ̶ó¸é
¾î¶² ¿¡·¯¸Þ½ÃÁöµµ º¸°íµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.
Äݹé(callback)ÇÔ¼ö´Â Äõ¸®ÀÇ °á°ú¸¦ ¹Þ±â À§Çؼ »ç¿ëµÈ´Ù. ÄݹéÇÔ¼ö´Â
´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù.
int Callback(void *pArg, int argc, char **argv, char **columnNames))
{
return 0;
}
|
ÄݹéÇÔ¼öÀÇ Ã¹¹øÂ° ÀÎÀÚ´Â sqlite_exec()ÀÇ ³×¹øÂ° ¾Æ±Ô¸ÕÆ®ÀÇ º¹»ç´Ù. ÀÌ ÀÎÀÚ´Â
Ŭ¶óÀÌ¾ðÆ® ÄÚµå·Î ºÎÅÍ ÄݹéÇÔ¼ö·Î ÀÓÀÇÀÇ Á¤º¸¸¦ Àü´ÞÇϱâ À§Çؼ »ç¿ëµÇ¾î Áø´Ù.
µÎ¹øÂ° ÀÎÀÚ´Â Äõ¸®°á°ú »ý¼ºµÈ Ä÷³(columns)ÀÇ °¹¼öÀÌ´Ù. ¼¼¹øÂ° ¾Æ±Ô¸ÕÆ®´Â
Ä÷³ÀÇ ½ÇÁ¦ ³»¿ëÀ» ´ã°í ÀÖÀ¸¸ç ÇϳªÀÇ Ä÷³ ³»¿ëÀº ÇϳªÀÇ ¹è¿¿¡ ´ëÀÀÇÑ´Ù.
³×¹øÂ° ÀÎÀÚ´Â Ä÷³ÀÇ À̸§ÀÌ´Ù.
ÄݹéÇÔ¼ö´Â Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾úÀ» °æ¿ì 0À» ¸®ÅÏÇÑ´Ù. ¸¸¾à ¿¡·¯°¡ ¹ß»ýÇÑ´Ù¸é
0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇϰí Äõ¸®´Â Ãë¼ÒµÈ´Ù. À̰æ¿ì sqlite_exe()´Â
SQLITE_ABORT¸¦ ¸®ÅÏÇÒ °ÍÀÌ´Ù.
4.5. ¿¡·¯ ÄÚµå Á¤»óÀûÀ¸·Î ½ÇÇàµÇ¾úÀ» °æ¿ì sqlite_exec()ÇÔ¼ö´Â SQLITE_OK¸¦ ¸®ÅÏÇÑ´Ù.
±×·¸Áö ¾ÊÀ»°æ¿ì ´ÙÀ½°ú °°Àº ¿¡·¯ ÄÚµåµéÀ» ¸®ÅÏÇÑ´Ù.
#define SQLITE_OK 0 /* Successful result */
#define SQLITE_ERROR 1 /* SQL error or missing database */
#define SQLITE_INTERNAL 2 /* An 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 sqlite_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 /* (Internal Only) Table or record not found */
#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 /* (Internal Only) Database table is empty */
#define SQLITE_SCHEMA 17 /* The database schema changed */
#define SQLITE_TOOBIG 18 /* Too much data for one row of a table */
#define SQLITE_CONSTRAINT 19 /* Abort due to contraint 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_ROW 100 /* sqlite_step() has another row ready */
#define SQLITE_DONE 101 /* sqlite_step() has finished executing */
|
´ÙÀ½Àº °¢ ¿¡·¯ÄÚµåµé¿¡ ´ëÇÑ ¼³¸íÀÌ´Ù.
- SQLITE_OK
¸í·ÉÀÌ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾ú´Ù.
- SQLITE_INTERMAL
SQLite libraryÀÇ ³»ºÎÀûÀÎ ¹®Á¦·Î ¹ß»ýÇϴµ¥, SQLite ¶óÀ̺귯¸®ÀÇ
¹ö±×¿¡ ÀÇÇØ¼¸¸ ¹ß»ýµÈ´Ù°í µÇ¾î ÀÖ´Ù. ¸¸¾à ÀÌ ¿¡·¯°¡ ¹ß»ýÇß´Ù¸é
SQLite mailing list¿¡ ¹®Á¦¸¦ º¸°íÇϱ⠹ٶõ´Ù.
- SQLITE_ERROR
SQL¿¡ ¹®Á¦°¡ ÀÖÀ» °æ¿ì ¹ß»ýµÈ´Ù.
- SQLITE_PERM
µ¥ÀÌÅÍÆäÀ̽º ÆÄÀÏÀ» ¿±âÀ§ÇÑ ±ÇÇÑÀÌ ¾øÀ» °æ¿ì ¹ß»ýÇÑ´Ù.
- SQLITE_ABORT
ÄݹéÇÔ¼ö°¡ 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇßÀ» ¶§ ¹ß»ýÇÑ´Ù.
- SQLITE_BUSY
´Ù¸¥ ÇÁ·Î±×·¥À̳ª ¾²·¹µå°¡ µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇϰí ÀÖÀ» ¶§
¹ß»ýÇÑ´Ù. SQLite´Â ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º¿¡ µ¿½Ã¿¡ µÎ°³³ª ±× ÀÌ»óÀÇ
¾²·¹µå°¡ Àд °ÍÀ» Çã¿ëÇÑ´Ù. ±×·¯³ª ¾²±âÀ§Çؼ ¿¾úÀ» °æ¿ì¿¡´Â
´ÜÁö Çϳª¸¸ÀÇ ¾²·¹µå¸¸ÀÌ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù.
- SQLITE_NOMEM
malloc()¿¡ ½ÇÆÐÇßÀ» ¶§ ¸®ÅÏÇÑ´Ù.
- SQLITE_READONLY
´ÜÁö Àб⸸ °¡´ÉÇÑ µ¥ÀÌÅͺ£À̽º(ȤÀº Àбâ Àü¿ëÀ¸·Î ¿¬)
ÆÄÀÏ¿¡ ¾²·Á°í ÇßÀ» ¶§ ¹ß»ýÇÑ´Ù.
- SQLITE_FULL
µð½ºÅ©¿¡ ´õÀÌ»óÀÇ °ø°£ÀÌ ¾ø°Å³ª µ¥¾îÅͺ£À̽º ÆÄÀÏÀÌ ³Ê¹«³ª Ŭ°æ¿ì
¹ß»ýÇÑ´Ù.
- SQLITE_AUTH
ÀÎÁõ¿¡ ½ÇÆÐÇß´Ù.
4.6. ¿¹Á¦ ÇÁ·Î±×·¥ Áö±Ý±îÁöÀÇ ³»¿ëµéÀ» ÀÌ¿ëÇØ¼ sqlite µ¥ÀÌÅÍ º£À̽º¿¡ ¿¬°áÇØ¼
µ¥ÀÌÅ͸¦ °¡Á®¿À´Â °£´ÜÇÑ ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ.
#include <stdio.h>
#include <sqlite.h>
static int callback(void *NU, int argc, char **argv, char **azColName)
{
int i;
for (i = 0; i < argc; i++)
{
printf ("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv)
{
sqlite *db;
char *ErrMsg = 0;
int rc;
if (argc != 3)
{
fprintf(stderr, "Usge : ./testsql [dbname] [query]\n");
exit(0);
}
db = sqlite_open(argv[1], 0, &ErrMsg);
if (db == 0)
{
fprintf(stderr, "Cant open database ; %s\n", ErrMsg);
exit(0);
}
rc = sqlite_exec(db, argv[2], callback, 0, &ErrMsg);
if (rc != SQLITE_OK)
{
fprintf(stderr, "SQL error : %d\n", ErrMsg);
}
sqlite_close(db);
return 0;
}
|
ÇÁ·Î±×·¥ÀÇ À̸§Àº testsql·Î ÇϰڴÙ. ´ÙÀ½°ú °°ÀÌ
ÄÄÆÄÀÏÈÄ Å×½ºÆ® ÇØº¸±â ¹Ù¶õ´Ù.
# gcc -o testsql testsql.c -L/usr/local/lib -lsqlite
|
´ÙÀ½Àº Å×½ºÆ® °á°ú´Ù
# ./testsql test.db "select * from test"
name = yundream
age = 19
name = hello
age = 22
# ./testsql test.db "insert into test values(\"kknd\", 56);"
# ./testsql test.db "select * from test"
name = yundream
age = 19
name = hello
age = 22
name = kknd
age = 56
|
°íÀÛ 38¶óÀÎ Á¤µµ·Î Á¦´ë·Î ÀÛµ¿ÇÏ´Â DB ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇß´Ù.
5. ÄݹéÇÔ¼ö¸¦ ÀÌ¿ëÇÏÁö ¾Ê´Â µ¥ÀÌÅÍ Á¢±Ù sqlite_exec() ÇÔ¼ö´Â SQLite µ¥ÀÌÅͺ£À̽º·Î ºÎÅÍ µ¥ÀÌÅ͸¦ °¡Á®¿À±â À§ÇÑ ´ÜÁö ÇÑ °¡Áö
¹æ¹ý¸¸À» Á¦°øÇÑ´Ù. ¹æ¹ýÀÌ Á¦ÇѵǾî ÀÖÀ¸´Ï ÀÌ°Í Àú°Í ½Å°æ½ºÁö ¾Ê°í °£´ÜÇÏ°Ô »ç¿ëÇÒ ¼ö
ÀÖ°ÚÀ¸³ª ¸¹Àº ÇÁ·Î±×·¡¸ÓµéÀÌ ÄݹéÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ µ¥ÀÌÅ͸¦ °¡Á®¿À´Â °Í¿¡ ¸¸Á·ÇÏÁö
¾ÊÀ» ¼öµµ ÀÖ´Ù. ÀÌ·± ÀÌÀ¯·Î SQLite 2.7.7ÀÌÈÄ ¹öÀü¿¡¼´Â ÄݹéÇÔ¼ö°¡ ¾Æ´Ñ ´Ù¸¥ ¹æ¹ýÀ»
ÅëÇØ¼ µ¥ÀÌÅ͸¦ °¡Á®¿Ã ¼ö ÀÖµµ·Ï Áö¿øÇÔ¼ö¸¦ Ãß°¡Çß´Ù.
3°³ÀÇ »õ·Î¿î ÇÔ¼ö°¡ Ãß°¡µÇ¾ú´Âµ¥, sqlite_exec()ÀÇ ±â´ÉÀ» 3°³·Î ³ª´©¾î¼
Á»´õ ¼¼¹ÐÇÏ°Ô Á¦¾îÇÒ ¼ö ÀÖµµ·Ï ±â´ÉÀ» ºÐÇÒ Çß´Ù°í º¸¸é µÈ´Ù.
typedef struct sqlite_vm sqlite_vm;
int sqlite_compile
(
sqlite *db, /* ¿¸° µ¥ÀÌÅÍ º£À̽º */
const char *zSql, /* SQL statement to be compiled */
const char **pzTail, /* OUT: uncompiled tail of zSql */
sqlite_vm **ppVm, /* OUT: the virtual machine to execute zQsql */
char **pzErrmsg /* OUT: Error message */
);
int sqlite_step
(
sqlite_vm *pVm, /* The virtual machine to exeucte */
int *pN, /* OUT: Number of columns in result */
const char ***pazValue, /* OUT: Column data */
const char ***pszColName /* OUT: Column names and datatypes */
);
int sqlite_finalize
(
sqlite_vm *pVm, /* The virtual machine to be finalized */
char **pzErrMsg /* OUT: Error message */
);
|
|
|