SQLite in WinCE

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