SQLite¸¦ À©µµ¿ìÁî CE Ç÷§Æû¿¡¼ ½ÇÇà µÇµµ·Ï ºôµå Çغ¸ÀÚ. À©µµ¿ìÁî Ç÷§ÆûÀº ±×³É ºôµåÇÏ¸é µÇÁö¸¸ CE Ç÷§Æû¿¡¼´Â ¸î ±ºµ¥ ¼öÁ¤À» ÇØ¾ß ÇÑ´Ù.
À©µµ¿ìÁî CE¿ë SQLite ´Ù¿î ¹Þ±â : http://sqlite-wince.sourceforge.net/ ÆÄÀÏÀ» »ç¿ëÇÏÁö ¾Ê°í sqlite ȨÇÇ¿¡¼ ´Ù¿î¹Þ¾Æ¼ ºôµåÇß´Ù. http://www.sqlite.org/download.html¿¡¼ sqlite-source-3_6_22.zip ¹öÀüÀ» ´Ù¿î¹Þ¾Æ ºôµåÇß´Ù. << Á¤ÀûÀÎ SQLite ¶óÀ̺귯¸® ºôµå >> 1. "ÇÁ·ÎÁ§Æ® Çü½Ä"Àº ½º¸¶Æ® ÀåÄ¡ ¼±ÅÃ, "ÅÛÇø´"Àº Win32 ½º¸¶Æ® ÀåÄ¡ ÇÁ·ÎÁ§Æ® ¼±ÅÃ
2. "Ç÷§Æû"Àº STANDARDSDK_500 ¼±Åà ( CE ¿¡¹Ä·¹À̼ǿ¡¼ ¸ÕÀú µ¹¾Æ°¡´ÂÁö Å×½ºÆ® Çϱâ À§Çؼ)
3. "ÀÀ¿ë ÇÁ·Î±×·¥ Á¾·ù"´Â "Á¤Àû ¶óÀ̺귯¸®(S)"¸¦ ¼±Åà "Ãß°¡ ¿É¼Ç"¿¡¼´Â "¹Ì¸® ÄÄÆÄÀÏµÈ Çì´õ(P)"´Â üũ¸¦ ÇØÁ¦ÈÄ ºó ÇÁ·ÎÁ§Æ®¸¦ ¸¸µç´Ù.
4. ´Ù¿î·Îµå ¹ÞÀº sqlite ¼Ò½º¸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÑ´Ù. ¿©±â¼ tclsqlite.c ÆÄÀÏÀº ÇÁ·ÎÁ§Æ®¿¡¼ Á¦¿Ü ½ÃŲ´Ù.
5, ÇÁ·ÎÁ§Æ® -> ¼Ó¼º -> ±¸¼º ¼Ó¼º -> C/C++ -> Àü󸮱⿡ NO_TCLÀ» Ãß°¡ÇÑ´Ù. TCLÀº »ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î TCL °ü·Ã Çؼ Á¦¿Ü½ÃŲ´Ù.
6. ÇÁ·ÎÁ§Æ® -> ±¸¼º ¼Ó¼º --> ¶óÀ̺귯¸® °ü¸®ÀÚ -> ÀÏ¹Ý -> Ãâ·ÂÆÄÀÏ¿¡¼ Ãâ·Â ¶óÀ̺귯¸® À̸§À» ¼öÁ¤ÇÑ´Ù. ¾Æ·¡¿Í °°ÀÌ ¹Ù²Û´Ù. ¸±¸®Áî¿¡¼´Â $(OutDir)\staticSQLite_R.lib µð¹ö±×¿¡¼´Â $(OutDir)\staticSQLite_D.lib
7. ÇÁ·ÎÁ§Æ® --> ¼Ó¼º --> C/C++ --> Ãâ·Â ÆÄÀÏ --> ÇÁ·Î±×·¥ µ¥ÀÌÅͺ£À̽º ÆÄÀÏÀ̸§ À̸§ ¼öÁ¤. µð¹ö°Å : vc80.pdb --> staticsqlite_d.pdb ¸±¸®Áî: vc80.pdb --> staticsqlite_r.pdb
8. shell.c ÆÄÀÏÀ» ¼öÁ¤ÇÑ´Ù. »¡°£»ö ¼Ò½º´Â ÁÖ¼®Ã³¸®ÇÏ°í #define FILENAME_MAX 1024 ¶óÀÎÀ» Ãß°¡ÇÑ´Ù.
//shell.c
#if defined(_WIN32) || defined(WIN32)
//# include <io.h>
#define FILENAME_MAX 1024
#define isatty(h) _isatty(h)
#define access(f,m) _access((f),(m))
#else
/* Make sure isatty() has a prototype.
*/
extern int isatty();
#endif
#if defined(_WIN32_WCE)
/* Windows CE (arm-wince-mingw32ce-gcc) does not provide isatty()
* thus we always assume that we have a console. That can be
* overridden with the -batch command line option.
*/
//#define isatty(x) 1
#endif
|
9. ºôµåÈÄ ¶óÀ̺귯¸®¿Í pdb ÆÄÀÏÀº °°Àº Æú´õ¿¡ µÎµµ·Ï ÇÑ´Ù.
<< »ùÇà ÇÁ·Î±×·¥ ºôµå >>
»ùÇà ÇÁ·Î±×·¥ MyWord ÇÁ·ÎÁ§Æ®¸¦ ºôµåÇغ¸ÀÚ. ÇÁ·Î±×·¥ÀÇ ±â´ÉÀº Çϳªµµ ¾ø°í SQLite°¡ Á¤»óÀûÀ¸·Î ½ÇÇàµÇ´ÂÁö üũÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. Á¤»óÀûÀ¸·Î ½ÇÇàµÇ¸é customer.db Æú´õ°¡ »ý¼ºµÈ´Ù.
ÇÁ·ÎÁ§Æ® Ÿ°ÙÀº STANDARDSDK_500 (ARMV4I)¿Í STANDARDSDK_500 (x86) µÎ °³¸¦ »ç¿ëÇÑ´Ù.
Á¤Àû ¶óÀ̺귯¸® ºôµå¿¡¼ ¸¸µé¾îÁø lib, pdb ÆÄÀÏÀº »ùÇà ÇÁ·Î±×·¥ÀÇ common Æú´õ·Î º¹»çÇÑ´Ù.
Çì´õ ¼±¾ðÀº ´ÙÀ½°ú °°´Ù.
#include "common/sqlite3.h"
|
¶óÀ̺귯¸®´Â ÇÁ·ÎÁ§Æ® ±¸¼ºÀÌ ¾Æ´Ï¶ó ¼Ò½º¿¡ Ãß°¡ÇÑ´Ù.
#ifdef _ARM_
#ifdef _DEBUG
#pragma comment(lib, "./common/CESQLiteLib_armv4i_D.lib")
#else
#pragma comment(lib, "./common/CESQLiteLib_armv4i_R.lib")
#endif
#endif
#ifdef _X86_
#ifdef _DEBUG
#pragma comment(lib, "./common/CESQLiteLib_D.lib")
#else
#pragma comment(lib, "./common/CESQLiteLib_R.lib")
#endif
#endif
|
STANDARDSDK_500 (ARMV4I) Ÿ°ÙÀº _ARM_ ¼±¾ðÀÌ, STANDARDSDK_500 (x86) Ÿ°ÙÀº _X86_ ¼±¾ðÀ» »ç¿ëÇÑ´Ù.
TestSQL Äڵ带 Ãß°¡ÇÏ¿© customer.db ÆÄÀÏÀÌ Á¤»ó ÀûÀ¸·Î ¸¸µé¾îÁö¸é SQLite¸¦ »ç¿ëÇÑ Áغñ´Â ³¡³µ´Ù.
void TestSQL()
{
#if 1
//ÆÄÀÏ DB »ç¿ë½Ã
const char* dbfile = "customer.db";
#else
//¸Þ¸ð¸® DB »ç¿ë½Ã
const char* dbfile = ":memory:";
#endif
sqlite3* pSQLite3 = NULL; //SQLite DB °´Ã¼ ÀúÀå º¯¼ö
char* szErrMsg = NULL; //Error ¹ß»ý½Ã ¸Þ¼¼Áö¸¦ ÀúÀåÇÏ´Â º¯¼ö
//µ¥ÀÌÅͺ£À̽º ¿±â : ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é »ý¼ºÇÑ´Ù.
int rst = sqlite3_open( dbfile, &pSQLite3 );
char szTrace[300];
if( rst )
{
sprintf( szTrace,"Can't Open database: %s\n", sqlite3_errmsg( pSQLite3 ));
//OutputDebugStringA( szTrace );
sqlite3_close( pSQLite3 );
pSQLite3 = NULL;
}
else
{
//OutputDebugStringA( "\nDatabase opened!!\n");
//Å×ÀÌºí »ý¼º
rst = sqlite3_exec( pSQLite3, "CREATE TABLE member ( name TEXT(20), age INTEGER )", callback, 0, &szErrMsg);
//µ¥ÀÌÅÍ »ðÀÔ
rst = sqlite3_exec( pSQLite3, "INSERT INTO member ( name, age ) values ( 'andy', 20 )", callback, 0, &szErrMsg);
//µ¥ÀÌÅÍ ÁúÀÇ
rst = sqlite3_exec( pSQLite3, "SELECT * FROM member", callback, 0, &szErrMsg);
if( rst == 0 )
{
MessageBox( NULL, L"gogogo", L"¼º°øÀûÀ¸·Î ã±â±îÁö ½ÇÇà\", MB_OK );
}
}
}
|
Á¤Àû ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ® : CESQLiteLib.zip
»ùÇà ÇÁ·ÎÁ§Æ® : MyWord.zip
<Âü°í, Æß>
Windows Mobile¿¡¼ SQLite »ç¿ëÇϱâ http://kr.blog.yahoo.com/nashorn74/1226324
|