|   0.  ½ÃÀÛÇÏ´Â ¸». 
                Á¡Á¡ ³¯¾¾°¡ ½Ò½ÒÇØ Áö´Â °ÍÀÌ ´À²¸Áø´Ù. ³ª¹« 
                °¡Áö¿¡´Â ¹«¼ºÇÏ´ø ³ª¹µÀÙÀÌ ¶³¾îÁ®¼ ¼¼È÷ °Ü¿ïÀ» ÁغñÇÏ´Â ¸ð½ÀµéÀÌ 
                º¸ÀÌ´Â °Í °°´Ù. ¿©·¯ºÐµéµµ °Ü¿ï Áغñ°¡ µÇ¾î °¡´ÂÁö ¸ð¸£°Ú´Ù. 
                 Áö³ ½Ã°£¿¡´Â °£´ÜÇÏ°Ô RDBMS¿Í E-R Diagram¿¡ 
                ´ëÇÑ ³»¿ëµéÀ» ¿¹¸¦ µé¾î¼ Å×À̺í°ú °°Àº °ÍµéÀ» ¸¸µé¾î º¸¾Ò°í, 
                mSQL¿¡¼ Áö¿øµÇ°í ÀÖ´Â SQL ¹®°ú µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ À¯Æ¿¸®Æ¼µéÀ» 
                ¾Ë¾Æ º¸¾Ò´Ù. ¾Æ¸¶µµ Áö³¹ø ½Ã°£ÀÇ ¿¹µéÀÌ ÇöÁ¦ »õ·Î¿î µ¥ÀÌÅÍ 
                º£À̽º¸¦ ÀÛ¼ºÇϴµ¥ ¸¹Àº µµ¿òÀÌ µÇ¸®¶ó°í »ý°¢µÈ´Ù.  À̹ø ½Ã°£¿¡´Â ¿ì¸®µéÀÌ °¡Àå ¹Ù¶ó°í ½Ç¹«ÀûÀÎ 
                °ÍµéÀ» ´Ù·ç¾î º¸±â·Î ÇÑ´Ù. API(Application Programming Interface)´Â 
                ´ëºÎºÐÀÇ °è¹ß ÅøÀ̳ª ¾ð¾î¿¡¼ Áö¿øÇÏ´Â ÇϳªÀÇ °è¹ßÀÚ¸¦ À§ÇÑ 
                ¶óÀ̺귯¸®·Î, ´ëºÎºÐÀÇ °è¹ßÀÚµéÀº API¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥À» 
                ¸¸µé¾î ³»°í ÀÖ´Ù. ±×¹Û¿¡ mSQL¿¡¼´Â Minerva ´ëÇп¡¼ °è¹ßÇÑ 
                ESLÀ̶ó´Â C¾ð¾î¿Í ºñ½ÁÇÑ ½ºÅ©¸³Æ® ¾ð¾î¸¦ °¡Áö°í, À¥°ú ¿¬µ¿À» 
                ½±°Ô ÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇϰí ÀÖ´Ù. W3-mSQLÀº ¾ÆÁÖ Æí¸®ÇÑ WWW Interface 
                ÆÐŰÁö·Î Ãʱ⿡´Â µû·Î À¥ »çÀÌÆ®¸¦ ã¾Æ¼ ¹Þ¾Æ »ç¿ëÇØ¾ß ÇßÁö¸¸, 
                2.0.0¹öÀüºÎÅÍ´Â ÇÔ²² °è¹ßÀÌ µÇ°í ÀÖ´Â »óȲÀ¸·Î º¸´Ù ½¬¿î À¥ 
                ÀÎÅÍÆäÀ̽º Á¢±ÙÀ» ÇÒ ¼ö ÀÖ´Ù.  ¿ì¸®ÀÇ ÃÖ´ëÀÇ °Àû(?)ÀÎ Windows °è¿¿¡¼ÀÇ 
                À¥ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ºñ±³¸¦ ÇÏÁö ¾ÊÀ» ¼ö ¾øÀ» °ÍÀÌ´Ù. ¿©·¯ºÐµéÀÌ 
                ÁÖ¸ñÇØ¾ß ÇÒ Á¡Àº Windows NT¿Í IIS ¼¹ö¿¡¼ Áö¿øÇϰí ÀÖ´Â ISAPI, 
                VBScript¿Í °°ÀÌ ¾ÆÁÖ ½¬¿î ¹æ¹ýµéÀ» ¿©·¯ºÐµéÀº ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. 
                ±×·¯³ª ±×°Í º¸´Ùµµ ´õ ½±°í À¯Áö º¸¼ö°¡ ½±´Ù´Â Á¡ÀÌ´Ù. °ÅÀÇ Perl 
                ½ºÅ©¸³Æ®¿Í °°Àº ¹®ÀåÀ» »ç¿ëÇϱ⸸ ÇØµµ À¥ÆäÀÌÁö¸¦ ½±°Ô Á¢±ÙÇÒ 
                ¼ö ÀÕ´Ù. ÀÌÁ¦ ¿©·¯ºÐµéµµ ±¸¹Ì°¡ ´ç±æ ¶§µµ µÈ µí ½Í´Ù.   1.  mSQL API  
                ¿©·¯ºÐµéÀº ¸î °¡ÁöÀÇ ±âº»ÀûÀÎ API¸¦ Á¢ÇÏ°Ô 
                µÉ °ÍÀÌ´Ù. mSQL API´Â Ãʱ⿡ ¸Å¿ì ±âÃÊÀûÀÎ °ÍÀ¸·Î ½ÃÀÛÀ» Çϰí 
                ÀÖÀ¸³ª, ÃÖ±Ù 2.0.0¹öÀü¿¡¼´Â ¸Å¿ì °·ÂÇÏ°Ô Áö¿øÀÌ µÇ°í ÀÖ´Â 
                °ÍÀ» ½±°Ô ¾Ë ¼ö ÀÖ´Ù. °¡Àå Áß¿äÇÑ ¼¹ö Á¦¾î¿¡ °üÇÑ API°¡ Ãß°¡ 
                µÈ °ÍÀÌ´Ù. ÇÏÁö¸¸, ÀÌ·¯ÇÑ °Í º¸´Ùµµ ´õ Áß¿äÇÑ °ÍÀÌ ¹Ù·Î ±âº»ÀûÀÎ 
                µ¥ÀÌÅͺ£À̽º¿Í Á¢¼ÓÇÏ´Â °ÍÀÌ´Ù. µ¥ÀÌÅÍ º£À̽º¿ÍÀÇ Á¢¼Ó ±×¸®°í 
                »óÈ£ Åë½Å¿¡ °üÇÑ °£´ÜÇÑ APIºÎÅÍ ½ÃÀÛÇØ º¸µµ·Ï ÇÏÀÚ. mSQL µ¥ÀÌÅͺ£À̽º ¹èÆ÷ÆÇ¿¡´Â µ¥ÀÌÅͺ£À̽º¿ÍÀÇ 
                Åë½ÅÀ» À§ÇÑ API ¶óÀ̺귯¸®¶ó´Â °ÍÀ» ÇÔ²² ¹èÆ÷ÇÑ´Ù. ¿©·¯ºÐµéÀÌ 
                mSQLµ¥ÀÌÅͺ£À̽º¸¦ ¼³Ä¡Çß´Ù¸é, Hughes µð·ºÅ丮¿¡ lib¿Í Include 
                µð·ºÅ丮°¡ Á¸ÀçÇÒ °ÍÀÌ´Ù. ´ÙÀ½°ú °°Àº ÆÄÀÏÀÌ Á¸ÀçÇÏ´ÂÁö¸¦ È®ÀÎÇØ 
                º¸ÀÚ. Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é, ´Ù½Ã mSQLÀ» ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ÇÊÀÚ´Â mSQL¶óÀ̺귯¸®¿Í 
                Çì´õ ÆÄÀÏÀ» /usr/local/lib, /usr/local/include µîÀÇ µð·ºÅ丮¿¡ 
                ÇÏÀÌÆÛ ¸µÅ©¸¦ ½ÃÄѼ »ç¿ëÇϰí ÀÖ´Ù. <±×¸²1>  ¶óÀ̺귯¸® ÆÄÀÏ. <±×¸²2>  Mini SQLµ¥ÀÌÅͺ£À̽º °ü·Ã 
                Çì´õ ÆÄÀϵé. À§¿Í °°ÀÌ ¸ðµç ÆÄÀϵéÀÌ Àß ÀÖ´Ù¸é, ½ÃÀÛÇØµµ 
                ÁÁ´Ù. ´ÙÀ½Àº ¿ì¸®°¡ ¾Ë¾Æ¾ß ÇÒ ÇÔ¼öµéÀ» Hughes¿¡¼ Á¤ÀÇ ÇØ³õÀº 
                °ÍµéÀÌ´Ù. ¿©·¯ºÐµéÀº À̵é Áß¿¡¼ ÀϺθ¸ ¸ÀÀ» º¸°Ô µÉ °Í °°´Ù. 
                    /***      msql.h  -
 **
 **
 ** Copyright (c) 1993-95  David 
                    J. Hughes
 ** Copyright (c) 1995  Hughes Technologies 
                    Pty Ltd
 **
 ** Permission to use, copy, and distribute 
                    for non-commercial purposes,
 ** is hereby granted without 
                    fee, providing that the above copyright
 ** notice appear 
                    in all copies and that both the copyright notice and this
 ** permission notice appear in supporting documentation.
 **
 ** This software is provided "as is" without 
                    any expressed or implied warranty.
 **
 ** ID = "$Id:"
 **
 */
 
                                
                                    | // ´ÙÀ½ 
                                ºÎºÐÀº »õ·Î Ãß°¡µÈ ºÎºÐÀ¸·Î ÅÒÆÄÀÏÀÌ Àß ¾ÈµÉ 
                                °æ¿ì¿¡ ÇØÁÖ¸é µÈ´Ù.#include <time.h>
 // »ðÀÔ ³¡..
 |  #ifndef MSQL_H#define MSQL_H
 #if defined(__STDC__) || defined(__cplusplus)#  define __ANSI_PROTO(x)       x
 #else
 #  define __ANSI_PROTO(x)       ()
 #endif
 #ifdef __cplusplusextern "C" 
                    {
 #endif
 typedef char    ** 
                    m_row; typedef struct field_s {char    *name,
 *table;
 int     type,
 length,
 flags;
 } m_field;
 typedef struct  m_seq_s {int     step,
 value;
 } m_seq;
 typedef struct  m_data_s 
                    {int     width;
 m_row   data;
 struct  m_data_s 
                    *next;
 } m_data;
 typedef struct m_fdata_s {m_field field;
 struct m_fdata_s 
                    *next;
 } m_fdata;
 typedef struct result_s {m_data 
                     *queryData,
 *cursor;
 m_fdata *fieldData,
 *fieldCursor;
 int     numRows,
 numFields;
 } m_result;
 #define msqlNumRows(res) res->numRows#define msqlNumFields(res) res->numFields
 #define INT_TYPE        1#define CHAR_TYPE       2
 #define REAL_TYPE       3
 #define IDENT_TYPE      4
 #define NULL_TYPE       5
 #define TEXT_TYPE       6
 #define DATE_TYPE       7
 #define UINT_TYPE       8
 #define MONEY_TYPE      9
 #define TIME_TYPE       10
 #define LAST_REAL_TYPE  10
 #define IDX_TYPE        253
 #define SYSVAR_TYPE     254
 #define ANY_TYPE        255
 #define NOT_NULL_FLAG   1#define UNIQUE_FLAG     2
 #define IS_UNIQUE(n)    (n 
                    & UNIQUE_FLAG)#define IS_NOT_NULL(n)  (n 
                    & NOT_NULL_FLAG)
 static char msqlTypeNames[][12] = {"???", 
                    "int", "char","real","ident","null","text","date","uint",
 "money","time","???"};
 /*** Pre-declarations for the API 
                    library functions
 ** º»°ÝÀûÀ¸·Î API ÇÔ¼ö°¡ Á¤ÀǵǴ 
                    ºÎºÐÀÔ´Ï´Ù.
 */
 #ifndef _MSQL_SERVER_SOURCE
 extern 
                     char msqlErrMsg[];
 int 
                        msqlConnect __ANSI_PROTO((char *));
 int     msqlSelectDB 
                    __ANSI_PROTO((int, char*));
 int 
                        msqlQuery __ANSI_PROTO((int, char*));
 int     msqlCreateDB 
                    __ANSI_PROTO((int, char*));
 int 
                        msqlDropDB __ANSI_PROTO((int, char*));
 int     msqlShutdown 
                    __ANSI_PROTO((int));
 int 
                        msqlGetProtoInfo __ANSI_PROTO((void));
 int     msqlReloadAcls 
                    __ANSI_PROTO((int));
 int 
                        msqlGetServerStats __ANSI_PROTO((int));
 char    *msqlGetServerInfo 
                    __ANSI_PROTO((void));
 char 
                       *msqlGetHostInfo __ANSI_PROTO((void));
 char    *msqlUnixTimeToDat
 e __ANSI_PROTO((time_t));char 
                       *msqlUnixTimeToTime __ANSI_PROTO((time_t));
 void    msqlClose 
                    __ANSI_PROTO((int));
 void 
                       msqlDataSeek __ANSI_PROTO((m_result*, 
                    int));
 void 
                       msqlFieldSeek __ANSI_PROTO((m_result*, 
                    int));
 void 
                       msqlFreeResult __ANSI_PROTO((m_result*));
 m_row 
                      msqlFetchRow __ANSI_PROTO((m_result*));
 m_seq   *msqlGetSequenceInfo 
                    __ANSI_PROTO((int, char*));
 m_field *msqlFetchField 
                    __ANSI_PROTO((m_result *));
 m_result 
                    *msqlListDBs __ANSI_PROTO((int));
 m_result 
                    *msqlListTables __ANSI_PROTO((int));
 m_result 
                    *msqlListFields __ANSI_PROTO((int, char*));
 m_result 
                    *msqlListIndex __ANSI_PROTO((int, char*, char*));
 m_result 
                    *msqlStoreResult __ANSI_PROTO((void));
 time_t  msqlDateToUnixTime
 __ANSI_PROTO((char *));time_t  msqlTimeToUnixTime 
                    __ANSI_PROTO((char *));
 #endif
 int     msqlLoadConfigFile 
                    __ANSI_PROTO((char *));int     msqlGetIntConf 
                    __ANSI_PROTO((char *, char *));
 char    *msqlGetCharConf 
                    __ANSI_PROTO((char *, char*));
 #ifdef __cplusplus}
 #endif
 #endif /*MSQL_H*/
 <¸®½ºÆ®1> msql.h Çì´õ ÆÄÀÏ ¸®½ºÆ®. ¸ðµç ÇÔ¼öµéÀ» ¸ðµÎ ¾Ë¾Æ¾ß ÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç, 
                µ¥ÀÌÅÍ º£À̽º¿Í Åë½ÅÀ» Çϴµ¥ ÀÖ¾î¼ °ÅÀÇ ÇÊ¿äÇÏÁö ¾Ê´Â ÇÔ¼öµéÀÌ 
                ÀÖ´Ù. ¿ì¸®´Â °¡Àå ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ´Â ÇÔ¼öµéÀ» ¾Ë¾Æ º¼ °ÍÀÌ´Ù. 
                ¶ÇÇÑ mSQL DBMS Ãʺ¸ÀÚµéÀÌ ½±°Ô ³õÄ¥ ¼ö ÀÖ´Â ¼û¾î ÀÖ´Â ÀÛÀº ¼Ò½ºµéÀ» 
                ¼¹ö¿¡¼ ã¾Æ¼ ÇÔ²² ºÐ¼®Çϵµ·Ï ÇÑ´Ù. ÇÊÀÚ°¡ ƯÁ¤ API¸¦ °øºÎÇÒ 
                ¶§ ¸ÕÀú ÇÏ´Â °ÍÀº Çì´õ ÆÄÀÏÀ» ¸ÕÀú º¸´Â °ÍÀÌ´Ù. APIÇì´õ ÆÄÀÏÀ» 
                ¸ÕÀú º¸´Â ÀÌÀ¯´Â ½±°Ô µ¥ÀÌÅÍ º£À̽º¿¡ ¾î¶² API°¡ ÀÖÀ¸¸ç, ¾î¶² 
                ±â´ÉÀ» ÇÒ ¼ö ÀÖÀ» °ÍÀ̶ó°í ÇÏ´Â °ÍµéÀ» ÃßÃøÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ´ÙÀ½Àº mSQL API·Î µ¥ÀÌÅͺ£À̽º °ü·Ã ÇÁ·Î±×·¥À» 
                ÀÛ¼ºÇÒ ¶§ ±âº»ÀûÀ¸·Î »ç¿ëµÇ´Â ÇÔ¼öµéÀ» ¼ø¼´ë·Î ³ª¿ÇÏ¿´´Ù. 
                ´ëÃæÀÇ ÇÔ¼ö »ç¿ë ¼ø¼´Â ´ÙÀ½°ú °°´Ù. 
                    #include <stdio.h>#include 
                    <string.h>
 #include <stdlib.h>
 #include 
                    <unistd.h>
 #include "msql.h"
 int main(argc,argv)int     argc;
 char    *argv[];
 {
 // 
                    ¼ÒÄÏ ½Äº°ÀÚ¸¦ ¼±¾ð ÇÑ´Ù.
 int sock;
 // µ¥ÀÌÅÍ º£À̽º·ÎºÎÅÍ Äù¸®ÀÇ °á°ú¸¦ ÀúÀåÇÏ´Â 
                    °÷À» ¼±¾ðÇÑ´Ù.// Çì´õ ÆÄÀÏ¿¡ m_resultÇüÀ» ¼±¾ðÇØ ³õ¾ÒÀ¸´Ï 
                    Âü°íÇϱ⠹ٶõ´Ù.
 m_result 
                    *rs;
         // 
                    Mini SQL°ú Á¢¼ÓÀ» ÇÏ´Â ºÎºÐ, ¿¡·¯°¡ ³ª¸é, ¿¡·¯ ¸Þ½ÃÁö Ãâ·Â.if ((sock 
                    = msqlConnect(NULL)) < 0)  {
 printf("Couldn't 
                    connect to engine!\n%s\n\n", msqlErrMsg);
 perror("");
 exit(1);
 }
         // 
                    Mini SQL¿¡¼ °ü¸®ÇÏ´Â µ¥ÀÌÅÍ º£À̽º¿¡¼ ¼±ÅÃÇÏ¿© Á¢¼ÓÇÑ´Ù.if (msqlSelectDB(sock,"µ¥ÀÌÅͺ£À̽º¸í") 
                    < 0)    {
 printf("µ¥ÀÌÅͺ£À̽º¿Í 
                    Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù, %s\n",,msqlErrMsg);
 }
         // 
                    Äõ¸®¸¦ ½ÇÇàÇÑ´Ù.msqlQuery(sock,qbuf)
         // 
                    µ¥ÀÌÅ͸¦ m_resultÇü¿¡ ÀúÀåÇÑ´Ù.(¹è¿¿¡ ÀúÀåÇÑ´Ù°í »ý°¢Çϸé 
                    ÆíÇÏ´Ù)rs=msqlstoreResult()
         // 
                    ÀúÀåµÈ µ¥ÀÌÅÍ µéÀ» Àû´çÇÑ Ã³¸®¸¦ ÇØÁÖ¾î¼ ÇÁ·Î±×·¥ÀÇ ¸ñÀûÀ» 
                    ´Þ¼ºÇÑ´Ù.         // 
                    µ¥ÀÌÅ͵éÀ» ÀÚÀ¯·Ó°Ô ÇØÁ¦½ÃÄÑ ÁØ´Ù.MsqlFreeresult(rs);
         // 
                    µ¥ÀÌÅÍ º£À̽º¿Í Á¢¼ÓÀ» ÇØÁ¦ÇÑ´Ù.msqlClose(sock);
 exit(0);
 }
 <¸®½ºÆ®3> ±âº»ÀûÀÎ ÇÁ·Î±×·¡¹Ö °ñ°Ý. ´ÙÀ½Àº ÇÔ¼ö¿¡ ´ëÇÑ ¼¼ºÎÀûÀÎ ³»¿ëÀ» ´Ù·çµµ·Ï 
                ÇØº¸ÀÚ. ´ëÃæ ¾î¶»°Ô »ç¿ëµÇ´ÂÁö´Â ½±°Ô ¾Ë  ÀÖÀ¸¸®¶ó »ý°¢µÇÁö¸¸, 
                °¢°¢ÀÇ ÇÔ¼öµéÀÇ ±â´Éµé°ú ¿É¼ÇµéÀ» »ó¼¼ÇÏ°Ô ¾Ë¾Æ º¸ÀÚ. ´ëºÎºÐÀÇ 
                APIµéÀº msqlÀ̶ó´Â ´Ü¾î°¡ ÇÔ¼öÀÇ ¸Ç ¾Õ¿¡ ºÙ¾î¼ ´Ù¸¥ ÇÔ¼öµé°úÀÇ 
                ±¸ºÐÀ» ÇØÁØ´Ù. ¶ÇÇÑ ¸ðµç ÇÔ¼öµéÀ» »ç¿ëÇϴµ¥ ÀÖ¾î¼ ¹ß»ýÇÏ´Â 
                ¸ðµç ¿¡·¯µéÀº MsqlErrMsg[]¶ó´Â ¹è¿¿¡ ÀúÀåÀÌ µÇ¹Ç·Î ¿¡·¯ Á¦¾î¸¦ 
                ÇÏ·Á°í ÇÒ¶§¿¡ ¿¡·¯¸¦ Ç¥½ÃÇÏ°Ô À§ÇÏ¿© Postgres95¿¡¼ »ç¿ëÇÏ´Â 
                Ç÷¡±× üũ´Â ÇÒ Çʿ䰡 ¾ø´Ù. ´ÜÁö ÇÔ¼öÀÇ ¸í·É ¼öÇàÀÇ ¼º°ø ¹× 
                ½ÇÆÐÀÇ ¿©ºÎ¸¸ if¹®À¸·Î ÆÇ´ÜÇÏ¿© ±×¿¡ ´ëÀÀµÇ´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇØÁֱ⸸ 
                ÇÏ¸é µÈ´Ù. ´ëºÎºÐÀÇ ÇÔ¼öµéÀº ´ÙÀ½°ú °°Àº »óÅ °ªÀ» returnÇØÁØ´Ù.         Flag 
                °ª ---------  ¼º°ø   0|
 |
 |
 |
 --------- 
                 ½ÇÆÐ   -1
 1-1. µ¥ÀÌÅͺ£À̽º Á¢¼Ó ¹× Äõ¸®¿Í °ü·ÃµÈ ÇÔ¼ö 
                * int msqlConnect (char *host)ÀÌ ÇÔ¼ö´Â MSQL µ¥ÀÌÅÍ º£À̽º ¿£Áø°úÀÇ Á¢¼ÓÀ» 
                Çü¼ºÇÏ´Â ¿ªÇÒÀ» Çϸç, ÇÁ·Î±×·¥ÀÇ Ãʱ⿡ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì°¡ 
                ¸¹´Ù. ±âº»°ªÀ¸·Î È£½ºÆ® ¸íÀÌ NULLÀÎ °æ¿ì¿¡´Â Localhost·Î °£ÁÖÇÏ¿© 
                Á¢¼ÓÇÏ°Ô µÈ´Ù. ÀÌ ÇÔ¼ö´Â À§ÀÇ °£´ÜÇÑ ¿¹Á¦¿¡¼ º¸¾ÒµíÀÌ sockÀ̶ó´Â 
                º¯¼ö¿¡ socket descriptor¸¦ ³Ñ°ÜÁØ´Ù. µû¶ó¼ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÒ 
                ¶§¿¡´Â À§ÀÇ ¿¹Á¦¿Í °°ÀÌ »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ °ªÀº µ¥ÀÌÅͺ£À̽º¿Í 
                ¿¬°áÇÏ¿© °è¼ÓÀûÀ¸·Î ÇÔ¼ö¿¡ ÀÌ °ªÀ» ³Ö¾î¾ß ÇÑ´Ù.
 * int msqlSelectDB(int sockdes, char *dbname)MsqlConnect°¡ ¼º°øÀûÀ¸·Î ÀÌ·ç¾îÁ³´Ù¸é, ´ÙÀ½Àº 
                ÇØ´ç ¼¹ö¿¡¼ °ü¸®¸¦ Çϰí ÀÖ´Â µ¥ÀÌÅÍ º£À̽º Áß¿¡ Á¢±ÙÇÏ·Á´Â 
                µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇϵµ·Ï ÇÏ´Â ÇÔ¼ö·Î Mini SQL 2.0 ¹öÀü ºÎÅÍ´Â 
                ´ÙÁßÀ¸·Î ¿©·¯ °³ÀÇ µ¥ÀÌÅͺ£À̽º¸¦ Á¢±ÙÇϵµ·Ï ÇÑ´Ù. sockÀº µ¥ÀÌÅͺ£À̽º¿Í 
                Á¢¼ÓÀ» Çϱâ À§ÇÏ¿© »ç¿ëÇß´ø msqlconnect()ÇÔ¼ö°¡ ¸®ÅÏÇÏ´Â sockdes°ªÀ» 
                ³Ö¾î ÁÖ¸é µÈ´Ù. ±×¸®°í dbname¿¡¼´Â ¹®ÀÚÇüÀ¸·Î µ¥ÀÌÅÍ º£À̽ºÀÇ 
                À̸§À» ³Ö¾î ÁØ´Ù.
 * int msqlCreateDB (int sockdes, Char *dbname)µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇϴµ¥ ¸¶Ä¡ Áö³ ´ÞÀÇ µ¥ÀÌÅͺ£À̽º 
                À¯Æ¿¸®Æ¼¿¡¼ msqladmin°ú°°Àº ¿ªÇÒÀ» ÇÏ´Â °ÍÀÌ´Ù. »ç¿ëÀÚµéÀÌ 
                ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â °ÅÀÇ µå¹°¸ç, µ¥ÀÌÅͺ£À̽º À¯Æ¿¸®Æ¼¸¦ 
                ¸¸µé·Á°í ÇÏÁö ¾Ê´Â ÇÑ »ç¿ëÇÏÁö ¾Ê´Â ÇÔ¼öÀÌ´Ù.
 * int msqlDropDB (Int sockdes, char *dbname)µ¥ÀÌÅͺ£À̽º¸¦ ¸ðµÎ Áö¿ì±â À§ÇÑ ÇÔ¼ö·Î msqladmin¿¡¼ 
                »ç¿ëµÇ´Â ÇÔ¼öÀÌ´Ù.
 * int msqlQuery (int sockdes, char *query)µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÏ¿© ¾ÆÁÖ ÀÚÁÖ »ç¿ëµÇ°í, Áß¿äÇÑ 
                ÇÔ¼ö·Î ÇÁ·Î±×·¡¸Ó°¡ ¸¸µç Äõ¸®¸¦ Á÷Á¢ µ¥ÀÌÅÍ º£À̽º·Î Àü¼ÛÇÏ¿© 
                ÁÖ´Â ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¡¸Ó°¡ ¿øÇÏ´Â µ¥ÀÌÅ͵éÀ» 
                ¿©·¯ °¡Áö Äõ¸®¹®¿¡ Á¶°Ç(where, order by)À» ÀÌ¿ëÇÏ¿© ¾ò¾î³¾ ¼ö 
                ÀÖ´Ù. query¶ó´Â º¯¼ö´Â ÁÖ·Î mallocÀ̳ª ¹è¿·Î ¼±¾ðµÇ¾î¼ ±× 
                ¹®ÀÚ¿ ³»¿¡ SELECT, UPDATE, DELETE µîÀÇ Äõ¸®¹®µéÀÌ »ðÀÔÀÌ µÇ±â 
                ¶§¹®¿¡ ÃæºÐÇÑ ¾çÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´çÇØÁÖ´Â °ÍÀÌ ÁÁ°í, ±×·¸°Ô ÇÏÁö 
                ¾Ê´Â´Ù¸é, Á÷Á¢ Äõ¸®¹®À» ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö°¡ ½ÇÇàÀÌ µÇ¸é, 
                MsqlStroreResult() ÇÔ¼ö¸¦ ½ÇÇàÇÏ¿© ÇÁ·Î±×·¥¿¡ ¼±¾ðÇÑ m_resultÇü 
                rs º¯¼ö¿¡ ÀúÀåÇϵµ·Ï ÇØ¾ß ½ÇÁ¦·Î ¿ì¸®°¡ ½±°Ô ¾µ¼ö ÀÖ´Â ¹è¿ÀÇ 
                ÇüŰ¡ µÈ´Ù. m_resultÇüÀº ±¸Á¶°¡ ¾à°£ º¹ÀâÇϱâ´Â ÇÏÁö¸¸, µ¥ÀÌÅͺ£À̽º 
                ±¸Á¶¸¦ ¾Ë·Á°í ÇÏÁö ¾Ê´Â ÇÑ ÀÌ ÀÚ·áÇü¿¡ ´ëÇÏ¿© ³Ê¹« ÀÚ¼¼ÇÏ°Ô 
                ¾Ë·Á°í Çϰųª, ¾î·Æ°Ô »ý°¢ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ÇÁ·Î±×·¡¸Ó°¡ »ç¿ëÇÏ´Â 
                ¹æ¹ý¿¡ ´ëÇÏ¿©¼´Â ¾ÆÁÖ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Ù.
 * m_result *msqlStoreResult ()ÀÌ ÇÔ¼ö´Â ¾Õ¿¡¼µµ ¸»ÇßµíÀÌ msqlQuery()ÇÔ¼ö¿Í 
                ÇÔ²² »ç¿ëµÇ¾îÁ®¼ ±× Äõ¸®ÀÇ °á°ú °ªÀ» m_result ÇüÀÇ rs º¯¼ö¿¡ 
                ÀúÀåÇϵµ·Ï ÇÏ´Â ÇÔ¼öÀÌ´Ù. À¯°¨½º·´°Ôµµ Áß¿äÇÑ ¿ªÇÒÀ» ÇÏÁö¸¸, 
                Ưº°ÇÑ º¯¼ö¸¦ °¡ÁöÁö ¾Ê´Â ÇÔ¼öÀÌ´Ù.
 * Void msqlFreeResult(m_result  *rs)´õ ÀÌ»ó Äõ¸®¸¦ ÇÑ m_result º¯¼öÇüÀ¸·Î ¼±¾ðÇÑ 
                rs º¯¼ö °á°ú°ªÀÌ ÇÊ¿äÇÏÁö ¾Ê´Ù¸é, rs°ªÀ» Àμö·Î ³Ö¾î ÁÖ¸é °á°ú 
                ÀÚÀ¯·Ó°Ô ¸¸µé¾î ÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù.
 * void msqlDataSeek(m_result *rs, int pos),void msqlFieldSeek(m_result *rs, int pos)
 m_result ±¸Á¶Ã¼¿¡´Â µ¥ÀÌÅÍÀÇ ´ÙÀ½ÀÇ row µ¥ÀÌÅÍ 
                °ª¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö´Â clientÃøÀÇ Ä¿¼¶ó´Â °ÍÀÌ Æ÷ÇÔÇÑ´Ù.  MsqlDataseek 
                ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µ¥ÀÌÅÍÀÇ À§Ä¡ Á¤º¸¸¦ À̵¿ÇÒ ¼ö ÀÖ´Ù. posÀÇ Ã³À½ 
                ½ÃÀÛ °ªÀº 0À¸·Î ½ÃÀÛÇϰí, Äù¸®·Î ¼±ÅõǾîÁø µ¥ÀÌÅÍÁß ¸Ç ³¡¿¡ 
                ÀÖ´Â µ¥ÀÌÅ͸¦ ¾ò±â¸¦ ¿øÇÒ ¶§¿¡´Â msqlNumrows() ÇÔ¼ö·Î ¼±ÅõǿÀÁø 
                µ¥ÀÌÅÍÀÇ °³¼ö¸¦ ¾òÀº ÈÄ¿¡ -1°ªÀ» ÇØÁÖ¾î pos °ª¿¡ ³Ñ°Ü ÁÖ°í, 
                msqlFetchrows() ³ª msqlFetchfield()ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¾òÀ» ¼ö ÀÖ´Ù.
   
                 
                        
                            | // Çà ´ÜÀ§ µ¥ÀÌÅ͸¦ 
                            ¾ò´Â´Ù.m_row mrow;
 // ¿´ÜÀ§ÀÇ µ¥ÀÌÅ͸¦ 
                            ¾ò´Â´Ù.
 m_field mfield;
 for(int i; I<= msqlNumRows(rs); i++) {
 mrow=msqlFetchRows(rs);
   
                             
                                
                                        
                                            | °¢ÀÇ 
                                            Çà¿¡ ´ëÇÏ¿© ¸Å¹ø Çѹø¾¿ Á¢±ÙÀ» ÇÑ´Ù. 
                                            ¸¶Âù°¡Áö·Î m_fieldÇüµµ °°Àº 
                                            ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.
 |                    ¡å 
                               ¡å    ¡å 
                             
                                
                                        
                                            | ¹ø    È£ | ÀÌ    ¸§ | ³ª   ÀÌ |  
                                        | mrow[0] | mrow[1] | mrow[2] |  
                                        | mrow[0] | mrow[1] | mrow[2] |  
                                        | : | : | : |  } |    * m_row msqlFetchRow(m_result *rs) , m_field *msqlFetchField(m_result *rs)
 µÎ ÇÔ¼ö´Â ½ÇÁ¦·Î µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ÇÔ¼ö·Î m_rowÇüÀ¸·Î 
                ÀúÀåÇÏ¿© ÇÁ·Î±×·¡¸Ó°¡ °Ë»öµÈ µ¥ÀÌÅÍÀÇ row¿¿¡ ´ëÇÏ¿© ½±°Ô Á¢±ÙÀÌ 
                °¡´ÉÇϵµ·Ï ÇÑ´Ù. °ÅÀÇ ¸ðµç ÇÔ¼öµéÀÌ ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© µ¥ÀÌÅ͸¦ 
                ¹Þ¾Æ µéÀ̴µ¥ »ç¿ëµÈ´Ù. ¹°·Ð msqlFetchField() ÇÔ¼ö¸¦ »ç¿ëÇÏ·Á¸é, 
                m_fieldÇüÀ¸·Î ¼±¾ðÇÑ º¯¼ö°¡ ÀÖ¾î¾ß ÇÑ´Ù.
 * int msqlNumRows(m_result *rs),int 
                msqlNumFields(m_result *rs)
 msqlQuery()¸¦ 
                ½ÇÇàÇÏ°í³ª¼ result °ªÀ» rs¿¡ ÀúÀåÇÏ¿´´Ù¸é, ¿ì¸®´Â ¸î °³ÀÇ µ¥ÀÌÅ͵éÀÌ 
                ÇöÁ¦ Äõ¸®·Î ¼±ÅõǾú´ÂÁö ¾Ë¾Æ¾ß ÇÒ¶§°¡ ¾ÆÁÖ ¸¹¾Æ ƯÈ÷ ºñºñ¿¡½º 
                °Ô½ÃÆÇÀ̳ª, °Ë»öÀ» ¿øÇÒ ¶§¿¡´Â ¸î¹øÀÇ ·çÇÁ¸¦ µ¹·Á¾ß ÇÒÁö ¸ð¸¦¶§¿¡ 
                ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù. rows¿Í Field´Â ½±°Ô ¾Ë ¼ö ÀÖµíÀÌ row´Â 
                rowÀÇ °³¼ö¸¦ fieldÇÔ¼ö´Â fieldÀÇ °³¼ö¸¦ Ãâ·ÂÇÏ¿© ÁØ´Ù.
 * void  msqlClose(int sock)mSQL µ¥ÀÌÅͺ£À̽º ¿£Áø°úÀÇ ¸ðµç Åë½ÅÀ» Á¾·áÇϱâ 
                À§ÇÏ¿© ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ´ëºÎºÐÀÇ °æ¿ì¿¡´Â ÇÁ·Î±×·¥ÀÇ ¸Ç ¸¶Áö¸·¿¡¼ 
                ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.
 1-2. µ¥ÀÌÅÍ º£À̽º ½ºÅ°¸¶¿Í °ü·ÃµÈ ÇÔ¼ö 
                ´ÙÀ½Àº µ¥ÀÌÅÍ º£À̽ºÀÇ ½ºÅ°¸¶¿Í °ü·ÃµÈ ÇÔ¼öµéÀ» 
                ¼Ò°³ÇÒ °ÍÀÌ´Ù. ¿©·¯ºÐµéÀº  msqladminÀ̶ó´Â ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© 
                µ¥ÀÌÅͺ£À̽ºÀÇ ½ºÅ°¸¶¸¦ ¼³°èÇÒ ¼ö ÀÖ´Ù.  ±×¸®°í Relshow, 
                msqldump¶ó´Â ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© µ¥ÀÌÅÍ º£À̽º ½ºÅ°¸¶À» º¼ °ÍÀÌ´Ù. 
                ÀÌ·¸°ÔÇØ¼ µ¥ÀÌÅÍ º£À̽ºÀÇ ½ºÅ°¸¶¸¦ º¸´Â ¹æ¹ýµµ ÀÖ°ÚÁö¸¸, Á»´õ 
                º»ÀÎÀÇ ÃëÇâ¿¡ ¸Â°Ô ÀÌ·¯ÇÑ ÇÁ·Î±×·¥µéÀ» °è¹ßÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ÀÇ 
                ÇÔ¼öµéÀ» ±×°ÍÀ» ¸¸µå´Âµ¥ ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëµÉ °Í °°´Ù. * m_result *msqlListDBs(Int sock)mSQL µ¥ÀÌÅͺ£À̽º ¿£Áø¿¡¼ °ü¸®Çϰí ÀÖ´Â µ¥ÀÌÅÍ 
                º£À̽ºÀÇ ¸ðµç List¸¦ º¸¿©ÁØ´Ù. ÀÌ¿¡ ´ëÇÑ µ¥ÀÌÅ͵éÀº m_result 
                ÇüÀ¸·Î ÀúÀåÀÌ µÇ´Âµ¥,  ÀÌÀü¿¡ ¾Ë¾Æº¸¾Ò´ø msqlfetchrow()ÇÔ¼ö¸¦ 
                ÀÌ¿ëÇÏ¿© µ¥ÀÌÅÍ º£À̽ºµéÀÇ À̸§µéÀ» ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.
 * m_result *msqlListTables(int sock)msqlListDBs() ÇÔ¼ö¿Í ¸¶Âù°¡Áö·Î µ¥ÀÌÅͺ£À̽º 
                Å×À̺íÀ» m_resultÇüÀ¸·Î ÀúÀåÇÑ´Ù.
 * m_result *msqlListFields (int sock, char 
                *tableNAME)ƯÁ¤ µ¥ÀÌÅͺ£À̽ºÀÇ 
                Å×ÀÌºí¿¡¼ÀÇ ¸ðµç Çʵ忡 ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÑ´Ù.
 * m_result *msqlListIndex(int sock, char 
                tableNAME, char *index)Å×À̺íÁß¿¡¼ 
                index Å×À̺íÀÇ ±¸Á¶¸¦ ¾Ë ¼ö ÀÖ°Ô ÇÑ´Ù.
 mSQL API¿¡ ´ëÇÏ¿© ÀÚ¼¼ÇÏ°Ô ¼³¸í¸¸À» ´õÇÑ´Ù´Â 
                °ÍÀº ¿Ø(~)Áö ½Ç¹«ÀûÀÎ °Í °°Áö ¾Ê¾Æ ÇÊÀÚ¸¦ ½È¾îÇÑ´Ù. ½ÇÁ¦ÀûÀÎ 
                ¿¹Á¦¸¦ ÁÖ·Î ´Ù·ç´Â °ÍÀÌ ÇÊÀÚÀÇ ½ºÅ¸ÀÏÀÌ´Ù. ´ÙÀ½Àº ½ÇÁ¦·Î ÄÄÆÄÀÏÀÌ 
                °¡´ÉÇϵµ·Ï ¸¸µé¾îÁø °£´ÜÇÑ ÇÁ·Î±×·¥ ¿¹Á¦ÀÌ´Ù. ¾Æ·¡ÀÇ ÇÁ·Î±×·¥ 
                ¿¹Á¦¸¦ º¸±â Àü¿¡ ÄÄÆÄÀÏÇÏ´Â ¹æ¹ýÀ» ¸ÕÀú ¾Ë¾Æ¾ß µÉ °Í °°´Ù.  1-3. ÄÄÆÄÀÏÇÏ´Â ¹æ¹ý 
                ÄÄÆÄÀÏÇÏ´Â ¹æ¹ý ¿©·¯ºÐÀÌ Gcc¿Í °°Àº ¼º´É ÁÁ°í, 
                Æí¸®Çϸç, ¶Ù¾î³ ÄÄÆÄÀÏ·¯°¡ ÀÖ´Ù¸é ¸ðµÎ °¡´ÉÇÏ´Ù. ÄÄÆÄÀÏÇÏ´Â ¹æ¹ýÀº ¿©·¯ °¡Áö°¡ µÉ ¼ö ÀÖ´Ù. 
                ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡ ¸Â°Ô ´ÙÀ½À» °íÄ¡¸é ´ëºÎºÐ ¼º°øÀûÀ¸·Î ÄÄÆÄÀÏÀ» 
                ÇÒ ¼ö ÀÖÀ¸¸®¶ó »ý°¢ÇÑ´Ù.   
                 
                        
                            | cc -c -I/usr/local/Hughes/include 
                            msqlapp.ccc -c msqlapp msqlapp.c -L/usr/local/Hughes/lib 
                            -lmsql
 cc -c msqlapp msqlapp.c -L/usr/local/Hughes/lib 
                            -I/usr/local/Hughes/include -lmsql -lnsl -lsocket
 |     
                    /*mSQL 2.0 release C 
                    API demonstration1
 Programmed by Kyung-Ho, 
                    Kim
 */
 #include <stdio.h>#include 
                    <stdlib.h>
 #include <time.h>
 #include 
                    "msql.h"
 void printErrMsg(void); void main(void){
 char 
                    key, *hostname;
 int sockdes, i, usn;
 m_result *rs;
 m_row mrow;
   printf("mSQL 2.0 Á¢¼Ó 
                    ÇÁ·Î±×·¥¡¬n");printf("Á¢¼ÓÇÒ 
                    mSQL 2.0 ¼¹ö¸¦ ÀÔ·ÂÇϼ¼¿ä¡¬n");
 hostname=malloc(30 
                    * sizeof(char));
 gets(hostname);
   printf("Áö±Ý <%s>¿¡ 
                    Á¢¼ÓÀ» ½ÃµµÇÕ´Ï´Ù.¡¬n", hostname);sockdes=msqlConnect(hostname);
 printf("¼ÒÄÏ ¹øÈ£ : %d  ¹øÀ¸·Î ¿¬°á¿¡ 
                    ¼º°øÇßÀ¾´Ï´Ù.¡¬n", sockdes);
   msqlClose(sockdes);printf("Á¢¼ÓÀ» 
                    Á¾·áÇßÀ¾´Ï´Ù. ¿©±â°¡ ÇÁ·Î±×·¥ÀÇ ³¡ÀÔ´Ï´Ù¡¬n");
   free(hostname);}
 void printErrMsg(void){
 puts("mSQL 
                    2.0 rel : ¿¡·¯°¡ ¹ß»ýÇßÀ¾´Ï´Ù.¡¬n");
 puts(msqlErrMsg);
 }
 <¿¹Á¦1> msqlapp.c ÇÁ·Î±×·¥ ¿¹Á¦ ½±°Ô º¸¾Æ¼´Â µ¥ÀÌÅÍ º£À̽º¿¡ Á¢±ÙÇÏ¿© ¾Æ¹« 
                Àϵµ ÇÏÁö ¾Ê°í Á¢¼ÓÀ» Á¾·áÇÑ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½Àº 
                ¿©·¯ºÐµéÀÇ µ¥ÀÌÅÍ º£À̽º ¼Ò½º µð·ºÅ丮¸¦ µÚÁú Â÷·ÊÀÌ´Ù. ´ÙÀ½°ú 
                °°Àº °æ·Î¿¡ ¼¹ö¿Í °ü·ÃÀÌ µÇ¾î ÀÖ´Â ¼Ò½º¿Í °ü·ÃÀÌ ¾ø´Â ¸î °³ÀÇ 
                ¼Ò½º¸¦ º¼ ¼ö ÀÖ´Ù. Insert_test.c ÆÄÀϰú select_test.c ÆÄÀÏÀ» 
                ½±°Ô ãÀ» ¼ö ÀÖÀ¸¸ç, sample.msql ÆÄÀϵµ ÇÔ²² ãÀ» ¼ö ÀÖ´Ù. ÀÌ 
                ÆÄÀϵéÀº ¿©·¯ºÐµéÀ» À§ÇÑ ÆÄÀÏÀÌ´Ù. µÎ°³ÀÇ ÆÄÀÏ ´ëÇÏ¿© ¿©·¯ºÐµéÀÌ 
                Á÷Á¢ ¼Ò½º¸¦ ºÐ¼®ÇØ º¸´Â °Íµµ ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÌ´Ù.  <±×¸² 3> mSQL ¼¹ö µð·ºÅ丮 ¿©·¯ºÐµéÀº sample.msqlÀ» ¸ÕÀú µ¥ÀÌÅͺ£À̽º·Î 
                ¸¸µé¾î¾ß ÇÑ´Ù. ±×¸®°í 2°³ÀÇ Å×½ºÆ® ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ¿© ½ÇÇàÇØ 
                º¸±â ¹Ù¶õ´Ù. ±×¸®°í relshow.c, msqladmin.c, msqldump.c msqlimport.c 
                msqlexport.c µîµîÀÇ ÆÄÀϵµ ÇÔ²² º¸À̴µ¥ ÀÌ·¯ÇÑ ÆÄÀϵéÀ» ºÐ¼®ÇÏ´Â 
                °ÍÀÌ °¡Àå ÁÁÀº ¹æ¹ýÀÌ´Ù.   2.  mSQL Tool Version 0.7 
                ÀÌÁ¦´Â °£´ÜÇÑ ¿¹Á¦¸¦ ´Ù·ç¾î º¸¾ÒÀ¸´Ï ¸öÀ» 
                Ç® ½Ã°£ÀÌ µÈ °Í °°´Ù. ±Ý³â ¿©¸§¿¡ ¸¸µé¾ú´ø ÇÁ·Î±×·¥À» Çѹø ¼Ò°³ÇØ 
                º¼±îÇÑ´Ù. ±×·¡ÇÈ ÇÔ¼öµµ »ç¿ëµÇÁö ¾Ê¾ÒÀ¸¸ç, ¿©·¯ºÐµéÀÌ ½±°Ô °íÃļ 
                ´Ù½Ã »õ·Ó°Ô ¸¸µé±âµµ ½¬¿ï °ÍÀ¸·Î º¸À̰í, ÀüüÀûÀÎ mSQL API µ¿ÀÛÀ» 
                ¾Ë ¼ö ÀÖÀ¸¸®¶ó »ý°¢µÈ´Ù. Àß ¸¸µé¾î Á³´Ù°í ÀÌ ÇÁ·Î±×·¥À» ¼Ò°³ÇÏ´Â 
                °ÍÀÌ ¾Æ´Ï¶ó´Â °ÍÀ» ¾Ë¾Æ ÁÖ¾úÀ¸¸é ÇÑ´Ù.  ÇÊÀÚ´Â ¿©·¯ °³ÀÇ 
                µ¥ÀÌÅÍ º£À̽º¸¦ »ç¿ëÇϰí Àִµ¥ ¶§¶§·Î µ¥ÀÌÅÍ º£À̽º ½ºÅ°¸¶¸¦ 
                º¸°í ½Í°Å³ª µ¥ÀÌÅ͵éÀÌ Àß µé¾î °¬´ÂÁö¸¦ ¾Ë¾Æ º¸°í ½ÍÀ» ¶§°¡ 
                ÀÖ´Ù. À̶§ ºÒÆíÇÑ °ÍÀ» ´Ù¸¥ »ç¶÷ÀÌ ¸¸µç ÅøÀ» ÀÌ¿ëÇÏÁö ¾Ê°í, 
                Á÷Á¢ ¸¸µé¾ú´Ù´Â °Í »ÓÀÌ´Ù. ´ÙÀ½Àº ÇÁ·Î±×·¥À» ½ÃÇàÇϸé, µ¥ÀÌÅÍ º£À̽ºÀÇ 
                Á¢¼ÓÀ» ¿øÇϴ ȣ½ºÆ®ÀÇ À̸§À» ³Ö±â¸¦ ¿øÇÑ´Ù.  <±×¸² 3> msqltool 0.7 ½ÇÇà ¿©±â¿¡ mSQL µ¥ÀÌÅÍ º£À̽º ¿£ÁøÀÌ µ¿ÀÛÇÏ´Â 
                ¿öÅ©½ºÅ×À̼ÇÀ̳ª ¸®´ª½º ¼¹öÀÇ IP³ª Domain name À» ÀÔ·ÂÇϸé 
                ¹Ù·Î Á¢¼ÓÀ» ÇÑ´Ù. ¸¸¾à ¾Æ¹« ÀԷµµ ÇÏÁö ¾Ê°í Enter¸¦ Çϸé, localhost·Î 
                Á¢¼ÓÇϵµ·Ï Çß´Ù.  ÀÌ ÇÁ·Î±×·¥ÀÇ ÁÖ¿ä ºÎºÐÀ» »ìÆìº¸¸é ´ÙÀ½°ú 
                °°´Ù. 1. µ¥ÀÌÅÍ º£À̽º ¼¹ö¿¡ Á¢¼ÓÇϱâ 
                //// msqlConnect() ÇÔ¼ö¸¦ »ç¿ëÇØ¼ mSQL 
                2.0°úÀÇ Á¢¼Ó ¿©ºÎ È®ÀÎ
 //
 printf("Áö±Ý <%s>¿¡ 
                Á¢¼ÓÀ» ½ÃµµÇÕ´Ï´Ù.¡¬n", hostname);
 if((sockdes=msqlConnect(hostname)) 
                < 0){
 printErrMsg();
 printf("¿¬°á¿¡ 
                ½ÇÆÐÇßÀ¾´Ï´Ù. %s ¼¹ö¿¡ mSQL 2.0 DBMS°¡ µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇϼ¼¿ä.¡¬n", 
                            hostname);
 msqlClose(sockdes);
 exit(1);
 }
 2. Á¢¼ÓÇÑ È£½ºÆ®ÀÇ ¸ðµç µ¥ÀÌÅÍ º£À̽ºµéÀ» ¾Ë¾Æ³»±â 
                do{//
 // 
                Á¢¼ÓµÈ µ¥ÀÌŸº£À̽º½Ã½ºÅÛÀÇ ¸ðµç µ¥ÀÌŸ º£À̽º¸¦ ¾Ë¾Æ³½´Ù
 //
 printf("¡¬nÁö±Ý 
                %s ¿¡¼ °ü¸®Çϰí ÀÖ´Â µ¥ÀÌÅÍ º£À̽ºÀÔ´Ï´Ù. ¡¬n", hostname);
 if(!(rs=msqlListDBs(sockdes))){
 printErrMsg();
 printf("°ü¸®Çϰí 
                ÀÖ´Â µ¥ÀÌŸ º£À̽º°¡ ¾ø´Â °Í °°À¾´Ï´Ù.¡¬n¡¬n");
 exit(1);
 }
 else{
 totaldb=msqlNumRows(rs);
 printf("ÇöÁ¦ ÃÑ %d 
                °³ÀÇ µ¥ÀÌŸ º£À̽º¸¦ °ü¸®Çϰí ÀÖÀ¾´Ï´Ù. ¡¬n", totaldb);
 // °¢ µ¥ÀÌŸ º£À̽ºÀÇ À̸§À» 
                ¾ò´Â´Ù.
 for(counter=0; 
                counter<totaldb; counter++){
 mrow=msqlFetchRow(rs);
 dblist[counter]=*mrow;
 }
 3. µ¥ÀÌÅÍ º£À̽ºÀÇ Å×ÀÌºí ½ºÅ°¸¶ Ãâ·Â 
                if(utb!=0){//
 // 
                Å×ÀÌºí³»¿¡ Çʵå Á¤º¸¸¦ ¾Ë¾Æ³½´Ù.
 //
 printf("ÀÔ·ÂÇϽŠ
                ¼ýÀÚ´Â %d ¹øÀÔ´Ï´Ù. ¡¬n", utb);
 strcpy(tbname, 
                tblist[utb-1]);
 printf("Áö±Ý 
                %s Å×À̺íÀ» Á¢±Ù Áß ÀÔ´Ï´Ù.¡¬n¡¬n", tbname);
 if(!(rs=msqlListFields(sockdes, 
                tbname))){
 printErrMsg();
 exit(1);
 }
 else{
 counter=0;
 printf("¡¬n");
 printf("-----------------------------------------------¡¬n");printf(" 
                 ÇöÁ¦ Á¢±Ù ÁßÀÎ µ¥ÀÌŸ º£À̽º : %s¡¬n", dbname);
 printf(" 
                 ÇöÁ¦ Á¢±Ù ÁßÀÎ Å×ÀÌºí        : 
                %s¡¬n", tbname);
 printf("-----------------------------------------------¡¬n");printf(" 
                 ¹ø È£   ÇʵåÀ̸§   ÇʵåÇü   ÇÊµå±æÀÌ 
                  ÇʼöŰ   Unique À妽º ¡¬n");
 printf("------------------------------------------------¡¬n");while((mfield=msqlFetchField(rs))){
 printf(" 
                %3d   %-13.13s %-7.7s   %6d    %s¡¬n", 
                counter+1, mfield->name,¡¬  fieldtype(mfield->type), 
                mfield->length, keytype(mfield->type, mfield->flags));
 counter++;
 }
 printf("------------------------------------------------¡¬n");
 }
 printf("¿£ÅÍ۸¦ 
                ÀÔ·ÂÇÏ½Ã¸é µ¥ÀÌŸ º£À̽º ¸Þ´º·Î µ¹¾Æ °©´Ï´Ù...¡¬n¡¬n");
 }
 else
 break;
 }while(tolower(getc(stdin))!= 
                0x1C);
 }
 °¢ ºÎºÐº°·Î Ưº°È÷ ¼³¸íÇÒ °ÍÀº ¾øÀ» °Í °°´Ù. 
                µ¶ÀÚ ¿©·¯ºÐµéÀÌ APIÀÇ ¼³¸íÀ» º¸¸é¼ µ¿ÀÛÀÌ ¾î¶»°Ô µÇ´ÂÁö ½±°Ô 
                ¾Ë ¼ö ÀÖ´Ù. <±×¸² 4> msqltool¿¡¼ µ¥ÀÌÅÍ º£À̽ºÀÇ 
                Å×ÀÌºí ½ºÅ°¸¶   4. Full Source Code List 
                /*mSQL 2.0 release Database 
                Schema Browser.
 Msqltools  version 0.7
 Programmed by Kyung-Ho, Kim
   GNU General Public License.Copyrighted by GPL.
 This Program 
                is FREE
 */
 #include <stdio.h>#include <stdlib.h>
 #include <string.h>
 #include <time.h>
 #include 
                <ctype.h>
 #include "msql.h"
 #define 
                 DEBUG     printf("¿©±â±îÁö´Â 
                ¿¡·¯°¡ ³ªÁö ¾Ê¾ÒÀ¾´Ï´Ù¡¬n");
 extern int errno;void printErrMsg(void);
 char *fieldtype(int type);
 char *keytype(int type, int flag);
 //// ¿¡·¯°¡ ¹ß»ýÇÏ¸é ¿¡·¯¸¦ Ãâ·ÂÇÑ´Ù.
 //
 void printErrMsg(void)
 {
 char *buffer;
 buffer = (char *)malloc( 30 * sizeof(char));
 puts("--------------------------------------------------------¡¬n");
 puts("mSQL 2.0 rel : ¿¡·¯°¡ ¹ß»ýÇßÀ¾´Ï´Ù.¡¬n");
 puts(msqlErrMsg);
 sprintf(buffer, 
                "¿¡·¯ ¹ß»ý");
 perror(buffer);
 puts("--------------------------------------------------------\n");
 free(buffer);
 }
 char *fieldtype(int type){
 char 
                *buffer;
   buffer=(char *)malloc(10*sizeof(char));   switch(type){case 
                INT_TYPE:
 strcpy(buffer, "Á¤¼öÇü");
 break;
 case UINT_TYPE:
 strcpy(buffer, "¹èÁ¤¼öÇü");
 break;
 case DATE_TYPE:
 strcpy(buffer, "³¯  Â¥");
 break;
 case TIME_TYPE:
 strcpy(buffer, "½Ã  °£");
 break;
 case MONEY_TYPE:
 strcpy(buffer, "  µ·  ");
 break;
 case CHAR_TYPE:
 strcpy(buffer,"¹®  ÀÚ");
 break;
 case TEXT_TYPE:
 strcpy(buffer, "ÅØ½ºÆ®");
 break;
 case REAL_TYPE:
 strcpy(buffer, "½Ç  ¼ö");
 break;
 case IDX_TYPE:
 strcpy(buffer,"À妽º");
 break;
 default:
 strcpy(buffer, "¾ø  À½");
 break;
 }
 return 
                b
 uffer;free(buffer);
 }
 char *keytype(int type, int flag){
 char *buffer;
   buffer=(char *)malloc(17*sizeof(char));   if(type !=IDX_TYPE)sprintf(buffer, 
                "%s", IS_NOT_NULL(flag)? " Y           N/A" 
                : " N           N/A");
 else
 sprintf(buffer, 
                "%s", IS_UNIQUE(flag)?   "N/A           Y 
                " : "N/A           N 
                ");
   return buffer;}
 void main(void)
 {
   char *hostname, dbname[20], tbname[20];int sockdes, counter, udb=1, utb, totaldb, totaltb, 
                totalfd;
   m_result *rs;m_row 
                mrow;
 m_field *mfield;
 char 
                **mmrow, **dblist, **tblist;
 //
 // ÇÁ·Î±×·¥ 
                ½ÃÀÛ-Á¢¼ÓÇÒ ¼¹öÀÇ ÁÖ¼Ò¸¦ ÀÔ·Â ¹Þ´Â´Ù.
 //
 printf("------------------------------------------------------¡¬n");
 printf("         mSQL 
                2.0 ºê¶ó¿ìÀú v.0.7 -- Á¦ÀÛÀÚ: ±è.°æÈ£(zesus:Hitel)¡¬n");
 printf("------------------------------------------------------¡¬n");
 printf("Á¢¼ÓÇÒ mSQL 2.0 ¼¹ö¸¦ ÀÔ·ÂÇϼ¼¿ä¡¬n");
 hostname=malloc(30 * sizeof(char));
 printf("¿ø°Ý 
                È£½ºÆ® (Enter=localhost): ");
 gets(hostname);
 //scanf("%s",hostname);
 //getchar();
 if(strcmp(hostname,"¡¬n")<0)
 strcpy(hostname,"localhost");
   //// msqlConnect() 
                ÇÔ¼ö¸¦ »ç¿ëÇØ¼ mSQL 2.0°úÀÇ Á¢¼Ó ¿©ºÎ È®ÀÎ
 //
 printf("Áö±Ý <%s>¿¡ Á¢¼ÓÀ» ½ÃµµÇÕ´Ï´Ù.¡¬n", 
                hostname);
 if((sockdes=msqlConnect(hostname)) 
                < 0){
 printErrMsg();
 printf("¿¬°á¿¡ 
                ½ÇÆÐÇßÀ¾´Ï´Ù. %s ¼¹ö¿¡ mSQL 2.0 DBMS°¡ µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇϼ¼¿ä.¡¬n", 
                hostname);
 msqlClose(sockdes);
 exit(1);
 }
 else{
 printf("¼ÒÄÏ ¹øÈ£ : %d  ¹øÀ¸·Î 
                ¿¬°á¿¡ ¼º°øÇßÀ¾´Ï´Ù.¡¬n", sockdes);
 printf("%s 
                : mSQL 2.0 ¼¹ö¿¡ ¼º°øÀûÀ¸·Î Á¢¼ÓÀ» ÇßÀ¾´Ï´Ù.¡¬n", hostname);
 printf("----------------------------------------------------¡¬n¡¬n");
 }
   do{//
 // Á¢¼ÓµÈ µ¥ÀÌŸº£À̽º½Ã½ºÅÛÀÇ ¸ðµç 
                µ¥ÀÌŸ º£À̽º¸¦ ¾Ë¾Æ³½´Ù
 //
 printf("¡¬nÁö±Ý %s ¿¡¼ °ü¸®Çϰí 
                ÀÖ´Â µ¥ÀÌÅÍ º£À̽º ÀÔ´Ï´Ù.¡¬n", hostname);
 if(!(rs=msqlListDBs(sockdes))){
 printErrMsg();
 printf("°ü¸®Çϰí 
                ÀÖ´Â µ¥ÀÌŸ º£À̽º°¡ ¾ø´Â °Í °°À¾´Ï´Ù.¡¬n¡¬n");
 exit(1);
 }
 else{
 totaldb=msqlNumRows(rs);
 printf("ÇöÁ¦ ÃÑ %d 
                °³ÀÇ µ¥ÀÌŸ º£À̽º¸¦ °ü¸®Çϰí ÀÖÀ¾´Ï´Ù. ¡¬n", totaldb);
 // °¢ µ¥ÀÌŸ º£À̽ºÀÇ À̸§À» 
                ¾ò´Â´Ù.
 for(counter=0; 
                counter<totaldb; counter++){
 mrow=msqlFetchRow(rs);
 dblist[counter]=*mrow;
 }
       // °¢ 
                µ¥ÀÌŸ º£À̽ºÀÇ À̸§À» Ãâ·ÂÇÑ´Ù.printf("----------------------------------------------------¡¬n");
 printf("   ¹ø 
                 È£          µ¥ÀÌŸ 
                º£À̽º¡¬n");
 printf("----------------------------------------------------¡¬n");
 for(counter=0; counter<totaldb; 
                counter++)
 printf(" 
                  %3d.            %-16.16s¡¬n", 
                counter+1, dblist[counter]);
       // °ü¸®Çϰí 
                ÀÖ´Â µ¥ÀÌŸ º£À̽º¸¦ »ç¿ëÀÚÀÇ ¼±ÅÃÀ» ÀÔ·Â ¹ÞÀ½.printf("------------------------------------------------------¡¬n");
 printf("µ¥ÀÌŸ º£À̽º¸¦ 
                ¼±ÅÃÇϼ¼¿ä[¹øÈ£,0(Á¾·á)] : ");
 scanf("%d",&udb);
 getc(stdin);
 }
 if(udb!=0){
 //
 // »ç¿ëÀÚÀÇ ¿ä±¸¿¡ µû¶ó ¼±ÅÃµÈ µ¥ÀÌŸ 
                º£À̽º¿¡ Á¢±ÙÇÑ´Ù.
 //
 printf("ÀÔ·ÂÇϽŠ
                ¼ýÀÚ´Â %d ¹øÀÔ´Ï´Ù. ¡¬n¡¬n", udb);
 strcpy(dbname, 
                dblist[udb-1]);
 printf("%s 
                µ¥ÀÌŸ º£À̽º¸¦ Á¢±ÙÇÕ´Ï´Ù.¡¬n", dbname);
 if(msqlSelectDB(sockdes, 
                dbname)==-1)
 printErrMsg();
 else
 printf("%s 
                µ¥ÀÌŸ º£À̽º¿¡ ¼º°øÀûÀ¸·Î Á¢±ÙÇß½À´Ï´Ù.¡¬n¡¬n", dbname);
     do{//
 // µ¥ÀÌŸ 
                º£À̽º³»ÀÇ Å×À̺í Á¤º¸¸¦ º¸¿© ÁØ´Ù.
 //
 if(!(rs=msqlListTables(sockdes))){
 printErrMsg();
 exit(1);
 }
 else{
 totaltb=msqlNumRows(rs);
 for(counter=0; 
                counter < totaltb; counter++){
 mrow=msqlFetchRow(rs);
 tblist[counter]=*mrow;
 }
 printf("¡¬n");
 printf("----------------------------------------------------¡¬n");
 printf(" 
                 ÇöÁ¦ Á¢±Ù ÁßÀÎ µ¥ÀÌŸ º£À̽º : %s¡¬n", dbname);
 printf(" 
                 Á¸ÀçÇÏ´Â Å×À̺íÀÇ ¼ö         : 
                %d¡¬n", totaltb);
 printf("----------------------------------------------------¡¬n");
 printf(" 
                 ¹ø È£               Å×À̺í 
                À̸§¡¬n");
 
   printf("--------------------------------------------------------¡¬n");for(counter=0; 
                counter<totaltb; counter++)
 printf("  %3d                 %s¡¬n", 
                counter+1, tblist[counter]);
          printf("-----------------------------------------------------¡¬n");printf("Á¢±ÙÇÒ 
                Å×À̺íÀ» ÀÔ·ÂÇϼ¼¿ä[¹øÈ£,0(Àü¸Þ´º))] : ");
 scanf("%d", 
                &utb);
 getchar();
 }
 
        if(utb!=0){//
 // 
                Å×ÀÌºí³»¿¡ Çʵå Á¤º¸¸¦ ¾Ë¾Æ³½´Ù.
 //
 printf("ÀÔ·ÂÇϽŠ
                ¼ýÀÚ´Â %d ¹øÀÔ´Ï´Ù. ¡¬n", utb);
 strcpy(tbname, 
                tblist[utb-1]);
 printf("Áö±Ý 
                %s Å×À̺íÀ» Á¢±Ù Áß ÀÔ´Ï´Ù.¡¬n¡¬n", tbname);
 if(!(rs=msqlListFields(sockdes, 
                tbname))){
 printErrMsg();
 exit(1);
 }
 else{
 counter=0;
 printf("¡¬n");
 printf("-------------------------------------------------¡¬n");
 printf(" 
                 ÇöÁ¦ Á¢±Ù ÁßÀÎ µ¥ÀÌŸ º£À̽º : %s¡¬n", dbname);
 printf(" 
                 ÇöÁ¦ Á¢±Ù ÁßÀÎ Å×ÀÌºí        : 
                %s¡¬n", tbname);
 printf("-------------------------------------------------¡¬n");
 
             printf(" 
                 ¹ø È£   Çʵå À̸§     ÇʵåÇü 
                    ÇÊµå±æÀÌ     ÇʼöŰ 
                   Unique À妽º ¡¬n");printf("-------------------------------------------------¡¬n");
 while((mfield=msqlFetchField(rs))){
 printf(" 
                %3d  %-13.13s %-7.7s   %6d   %s¡¬n", 
                counter+1, mfield->name, ¡¬
 fieldtype(mfield->type), 
                mfield->length, keytype(mfield->type, mfield->flags));
 counter++;
 }
 printf("-------------------------------------------------¡¬n");
 }
 printf("¿£ÅÍ۸¦ 
                ÀÔ·ÂÇÏ½Ã¸é µ¥ÀÌŸ º£À̽º ¸Þ´º·Î µ¹¾Æ °©´Ï´Ù...¡¬n¡¬n");
 }
 else
 break;
 }while(tolower(getc(stdin))!= 
                0x1C);
 }
 }while(udb!=0);
 
 
   //// mSQL 2.0 
                µ¥ÀÌŸ º£À̽º ½Ã½ºÅÛ°úÀÇ Á¢¼ÓÀ» Á¾·áÇÑ´Ù.
 //
 msqlClose(sockdes);
 printf("%s 
                : mSQL 2.0 ¼¹ö¿¡¼ Á¢¼ÓÀ» Á¾·á ÇßÀ¾´Ï´Ù.¡¬n", hostname);
 free(hostname);
   printf("¡¬n¡¬n");printf("-------------------------------------------------------¡¬n");
 printf("       mSQL 
                2.0 ºê¶ó¿ìÀú v0.7 À» »ç¿ëÇØ Áּż ´ë´ÜÈ÷ °¨»çÇÕ´Ï´Ù.¡¬n");
 printf("-------------------------------------------------------¡¬n");
 printf("¡¬n¡¬n¡¬n");
 }
   3.  ¸¶Ä¡¸ç.. 
                ÀÌ ¹øÈ£¿¡¼´Â mSQLÀÇ API¿¡ ´ëÇÏ¿© ¾Ë¾Æ º¸¾Ò´Ù. 
                ¸¹Àº sampleÆÄÀϵéÀ» ½Ç¾î ½ÇÁ¦ÀûÀ¸·Î ÀÌÇØ¸¦ ³ôÀÌ·Á°í ÇßÀ¸³ª ºÎÁ·ÇÑ 
                ¸éÀÌ ¸¹¾Ò´ø °ÍÀ¸·Î »ý°¢ÀÌ µç´Ù. ´ÙÀ½ È£¿¡¼´Â Web°ú ¿¬µ¿ÇÏ´Â 
                °£´ÜÇÑ ¿¹Á¦¸¦ º¸À̱â·Î ÇÑ´Ù. 
 
 ¡ã top
 
 
 |