1. µé¾î °¡´Â ¸» Áö³ È£¿¡¼´Â MySQLÀ» ÀÌ¿ëÇÏ¿© °£´ÜÇÏ°Ô³ª¸¶ ½´ÆÛ ¸¶ÄÏ¿¡¼ ¸ÅÃâÀ» °ü¸®ÇÏ´Â ¿¹¸¦ µé¾î SQL ¾ð¾î¿¡ ´ëÇؼ °£´ÜÈ÷ »ìÆì º¸¾Ò´Ù. ±âº»ÀûÀÎ SQL ¾ð¾î¸¸ ¾Ë¾Æµµ MySQLÀÇ Client ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© DataµéÀ» °ü¸®ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸, SQL ¾ð¾î¸¦ ¸ð¸£°Å³ª ÄÄÇ»Å͸¦ Àß ´Ù·çÁö ¸øÇÏ´Â »ç¶÷µéÀº Database¸¦ ¾î¶»°Ô ¾µ ¼ö ÀÖÀ»±î. ¿ì¸®³× ½´ÆÛ¸¶ÄÏ ¾ÆÀú¾¾µé Áß¿¡¼ SQL ¾ð¾î¸¦ »ç¿ëÇؼ ¸ÅÃâÀ» °ü¸®ÇÒ ¼ö ÀÖÀ» ¾ÆÀú¾¾µéÀÌ ¾ó¸¶³ª ÀÖÀ»±î. À̹ø È£¿¡¼´Â MySQLÀÇ C API¿¡ ´ëÇؼ ¾Ë¾Æº»´Ù. MySQLÀÇ C API¸¦ ÀÌ¿ëÇϸé C³ª C++·Î § ÇÁ·Î±×·¥¿¡¼ MySQL ¼¹ö¿¡ Á¢¼ÓÀ» ÇÒ ¼ö ÀÖ´Ù. (¿ì¸®³× ½´ÆÛ¸¶ÄÏ ¾ÆÀú¾¾´Â ¾î·Á¿î SQL ¾ð¾î¸¦ ¹è¿ï ÇÊ¿ä°¡ ¾ø´Ù. ½´ÆÛ¸¶ÄÏ ¾ÆÀú¾¾¸¦ ³·Ã纸´Â °ÍÀÌ JDBC¸¦ ÀÌ¿ëÇÏ¿© ¿¬µ¿À» ÇÒ ¼ö ÀÖ´Ù. À̹ø ȸ¿¡¼´Â C API¿¡ ´ëÇؼ ¾Ë¾Æµµ·Ï ÇÏ°í, ´ÙÀ½ ȸ¿¡¼ PHP3¿Í MySQLÀ» ÀÌ¿ëÇÏ¿© Web°ú ¿¬µ¿ÇÏ´Â ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¸µµ·Ï ÇÑ´Ù. 2. ÇÁ·Î±×·¥ ÄÄÆÄÀÏ C API¸¦ ¼Ò°³Çϱâ Àü¿¡ ÀÏ´Ü gccÀÇ ¿É¼ÇÀ» Àß ¸ð¸£´Â µ¶ÀÚ¸¦ À§ÇØ MySQLÀÇ C API¸¦ ÀÌ¿ëÇÑ ¼Ò½º Äڵ带 ÄÄÆÄÀÏ ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ¾Ë¾Æ º»´Ù. ¸ÕÀú ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸ÀÚ. #include <stdio.h> #include <mysql.h> #include <errno.h> void main(void) { MYSQL mysql ; mysql_init(&mysql) ; if(!mysql_real_connect(&mysql, NULL, "»ç¿ëÀÚÀ̸§","¾ÏÈ£", NULL ,3306, (char *)NULL, 0)) { printf("%s\n",mysql_error(&mysql)); exit(1) ; } printf("¼º°øÀûÀ¸·Î ¿¬°áµÇ¾ú½À´Ï´Ù.\n") ; mysql_close(&mysql) ; } À§ÀÇ ¿¹Á¦´Â MySQL ¼¹ö¿¡ Á¢¼ÓÀ» ÇÏ¿©, ¿¬°áÀÌ Á¦´ë·Î µÇ¾úÀ» °æ¿ì '¼º°øÀûÀ¸·Î ¿¬°áµÇ¾ú½À´Ï´Ù.'¶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í Á¾·áÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¿¬°áÀÌ ¾È µÉ°æ¿ì ¿Ö ¿¬°áÀÌ ¾È µÇ´ÂÁö Ãâ·ÂÀ» ÇÏ°Ô µÈ´Ù. ¿¡·¯°¡ ³ª¸é ±ÛÀÇ ÈĹݺο¡ ÀÖ´Â '¹®Á¦ ÇØ°á' ºÎºÐÀ» ÀÐ¾î º¸±æ ¹Ù¶õ´Ù. ÀÏ´Ü À§¿¡ ³ª¿Â ÇÔ¼öµéÀÇ ¼³¸íÀº µÚ¿¡ ÇÏ°í ÄÄÆÄÀÏÀ» ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¸ÀÚ. À§ÀÇ ¼Ò½º Äڵ尡 con.c¶ó°í °¡Á¤À» ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÁ·ÒÇÁÆ®¿¡¼ ¸í·ÉÀ» ³»¸®¸é µÈ´Ù. $ gcc -o con con.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient ÀÌ·¸°Ô Çϸé conÀ̶ó´Â ½ÇÇà ÆÄÀÏÀÌ »ý±â°Ô µÈ´Ù. -I ¿É¼ÇÀº Çì´õ ÆÄÀÏÀÇ °æ·Î¸¦ Á¤ÇÑ´Ù. Áï, mysql.hÀÇ °æ·Î¸¦ ÁöÁ¤ÇØ ÁÖ¸ç, ÇÊÀÚÀÇ °æ¿ì ±× °æ·Î°¡ /usr/local/include/mysqlÀÌ´Ù. °¢ÀÚ °æ·Î°¡ Ʋ¸®¹Ç·Î Àڽſ¡°Ô ¸Â°Ô º¯°æÀ» ÇÏÀÚ. º¸Åë /usr/include/mysql ȤÀº /usr/local/include/mysql ȤÀº /usr/include¿¡ Á¸ÀçÇÑ´Ù. /usr/include¿¡ ÀÖÀ» °æ¿ì¿¡´Â ÀÌ ¿É¼ÇÀ» ÁÖÁö ¾Ê¾Æµµ µÈ´Ù. -l ¿É¼ÇÀº ¸µÅ·½Ã »ç¿ëÇÒ ¶óÀ̺귯¸®¸¦ ÁöÁ¤ÇÑ´Ù. MySQLÀÇ C API¸¦ »ç¿ëÇßÀ» °æ¿ì¿¡´Â ²À -lmysqlclient¶ó´Â ¿É¼ÇÀ» ÁÖ¾î¾ß ÇÑ´Ù. -L/usr/local/lib/mysql ¿É¼ÇÀº mysqlclient¶ó´Â ¶óÀ̺귯¸®ÀÇ °æ·Î¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¿É¼Çµµ »ç¿ëÀÚ¿¡ µû¶ó ´Ù¸£´Ù. MySQLÀÇ ¼³Ä¡½Ã¿¡ ¾îµð¿¡ ¶óÀ̺귯¸®¸¦ ¼³Ä¡Çß´ÂÁö È®ÀÎÇÏÀÚ. ÁöÁ¤µÈ µð·ºÅ͸® ¹Ø¿¡¼ libmysqlclient.so ¶ó´Â ¶óÀ̺귯¸®¸¦ º¼ ¼ö ÀÖ´Ù. ¿É¼Ç°ú °æ·Î¸¦ Àß ÁöÁ¤ÇØ ÁÖ¾ú´Ù¸é À§ÀÇ ¼Ò½º ÄÚµå´Â Àß ÄÄÆÄÀÏ µÇ°í, ½ÇÇà½Ã¿¡ MySQL µ¥¸óÀÌ ½ÇÇà ÁßÀ̶ó¸é '¼º°øÀûÀ¸·Î ¿¬°áµÇ¾ú½À´Ï´Ù.'¶ó´Â ¸Þ½ÃÁö¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. 3. C API ÀÚ·áÇü C API¿¡¼ ¾²ÀÌ´Â ÀÚ·áÇü¿¡ ´ëÇؼ ¾Ë¾Æ º¸ÀÚ. MYSQL : Database¿ÍÀÇ ¿¬°áÀ» °ü¸®ÇÏ´Â ±¸Á¶Ã¼ÀÌ´Ù. ´ëºÎºÐÀÇ C API ÇÔ¼ö¿¡¼ ¾²ÀδÙ. MYSQL_RES : SELECT µî °á°ú¸¦ ¸®ÅÏÇÏ´Â queryÀÇ °á°ú¸¦ ³ªÅ¸³»´Â ÀÚ·áÇüÀÌ´Ù. MYSQL_ROW : MYSQL_RES¿¡¼ ÇϳªÀÇ ·¹Äڵ徿 °ªÀ» ¾ò¾î ¿Ã¶§ ¾²ÀÌ´Â ÀÚ·áÇüÀÌ´Ù. MYSQL_FIELD : ÇʵåÀÇ À̸§°ú ÇʵåÀÇ Å¸ÀÔ µî Çʵ忡 °üÇÑ Á¤º¸¸¦ ÀúÀåÇÏ´Â ÀÚ·áÇüÀÌ´Ù. 4. MySQL Database¿¡ ¿¬°áÇϱâ ÀÌÁ¦ ¸ðµç Áغñ¸¦ ¸¶ÃèÀ¸¹Ç·Î º»°ÝÀûÀ¸·Î MySQL C API¿¡ ´ëÇؼ ¾Ë¾Æº¸ÀÚ. * MYSQL* mysql_init(MYSQL *mysql) mysql_real_connect()¸¦ À§ÇÏ¿© MYSQL °´Ã¼¸¦ ÃʱâÈÇÑ´Ù. Ưº°È÷ ÇÏ´Â ÀÏÀº ¾øÀ¸³ª MYSQL °´Ã¼¸¦ ÃʱâÈ ÇϹǷΠmysql_real_connect() Àü¿¡ ²À È£ÃâÇÏ¿© ÁÖÀÚ. * MYSQL* mysql_real_connect(MYSQL* mysql, const char* host, const char* user, const char* passwd, const char* db, uint port, const char* unix_socket, uint client_flag) host¿¡ ÁöÁ¤µÈ ¼¹ö·Î ¿¬°áÀ» ½ÃµµÇÏ´Â ÇÔ¼öÀÌ´Ù. mysql_get_client_info() ÇÔ¼ö¸¦ Á¦¿ÜÇÑ ¸ðµç API ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ ²À È£ÃâÇÏ¿©¾ß ÇÏ´Â ÇÔ¼öÀÌ´Ù. °¢ ÀÎÀÚ¿¡ ´ëÇÑ ¼³¸íÀº ´ÙÀ½°ú °°´Ù. mysql : MYSQL º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ÇüÀÌ´Ù. host : ¿¬°áÇÏ°íÀÚ ÇÏ´Â ¼¹öÀÇ IP Address ȤÀº µµ¸ÞÀÎ À̸§À» Àû¾îÁÖ¸é µÈ´Ù. NULL·Î Àû¾îÁÖ¸é localhost¸¦ ÀǹÌÇÑ´Ù. user : Á¢¼Ó½ÃÀÇ »ç¿ëÀÚ À̸§ÀÌ´Ù. NULLÀ̸é ÇöÀç loginÇÑ user ID°¡ µÈ´Ù. passwd : userÀÇ ¾ÏÈ£¸¦ ³ªÅ¸³½´Ù. NULLÀÌ¸é ¾ÏÈ£°¡ ¾ø´Ù´Â ÀǹÌÀÌ´Ù. db : Á¢¼Ó½Ã¿¡ »ç¿ëÇÏ°íÀÚ ÇÏ´Â database¸¦ ³ªÅ¸³½´Ù. NULL·Î ÁöÁ¤À» ÇÏ¸é ¿¬°á ÈÄ¿¡ mysql_select_db ȤÀº mysql_query()¸¦ ÀÌ¿ëÇؼ ÁöÁ¤ÇÒ ¼ö ÀÖ°í, database¸¦ ¹Ù²Ü ¼öµµ ÀÖ´Ù. port : TCP/IP ¿¬°á½Ã¿¡ »ç¿ëÇÒ Æ÷Æ® ¹øÈ£¸¦ ³ªÅ¸³½´Ù. unix_socket : º¸Åë NULL·Î ÇϸéµÈ´Ù. client_flag : ÀÌ ÀÎÀÚµµ º¸Åë 0À¸·Î ÇØÁÖ¸é µÈ´Ù. mysql_real_connect()´Â ¼º°øÀûÀ¸·Î ¿¬°áÀÌ µÇ¸é, MYSQL Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁÖ°í ¿¬°á¿¡ ½ÇÆÐÇÏ¿´À» °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù. ¿¬°á¿¡ ½ÇÆÐ ÇÏ¿´À» °æ¿ì ÀÌ ±ÛÀÌ ¸¶Áö¸·¿¡ ÀÖ´Â '¹®Á¦ ÇØ°á'ºÎºÐÀ» ÀÐ¾î º¸±æ ¹Ù¶õ´Ù. »ç¿ë ¿¹´Â À§ÀÇ ¿¹Á¦¿¡ ³ª¿ÍÀÖ´Ù. * void mysql_close(MYSQL* mysql) ¼¹ö¿ÍÀÇ ¿¬°áÀ» ²÷°í mysql¿¡ ÇÒ´çµÇ¾ú´ø ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù. 5. Query¿Í °á°ú °ªÀ» ¾ò¾î ¿À±â ¼¹ö¿Í ¼º°øÀûÀ¸·Î ¿¬°áÀÌ µÇ¾ú´Ù¸é, ÀÌÁ¦ ¿øÇÏ´Â Query¸¦ ÇÏ°í, ±× °á°ú °ªÀ» ¾ò¾î ¿Ã ¼ö ÀÖ´Ù. Query¸¦ ÇÒ ¼ö ÀÖ´Â ÇÔ¼ö´Â mysql_query()¿Í mysql_real_query() µÎ °¡Áö°¡ ÀÖ´Ù. * int mysql_query(MYSQL* mysql, const char* query) : query¸¦ ½ÇÇà ½ÃŲ´Ù. mysql Ŭ¶óÀ̾ðÆ®¿¡¼ Çß´ø °Í ó·³ queryÀÇ ³¡¿¡ ';'°¡ Æ÷ÇԵǾ ¾È µÈ´Ù. queryÀÇ ³¡Àº NULL ¹®ÀÚ('\0')ÀÌ´Ù. µû¶ó¼ ¹ÙÀ̳ʸ® µ¥ÀÌŸ°¡ ¼¯ÀÎ query´Â ¼öÇàÀ» ÇÒ ¼ö ¾ø´Ù. ¹ÙÀ̳ʸ® µ¥ÀÌŸ°¡ ¼¯Àº queryÀÇ Áß°£¿¡´Â NULL ¹®ÀÚ°¡ ¿Ã ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. query¸¦ ¼º°øÀûÀ¸·Î ¸¶Ãè´Ù¸é 0À» ¸®ÅÏÇÑ´Ù. * int mysql_real_query(MYSQL* mysql, const char* query, unsigned int length) : mysql_query()´Â queryÀÇ ³¡À» NULL ¹®ÀÚ·Î ±¸ºÐÀ» Çϴµ¥ ¹ÝÇØ, mysql_real_query´Â queryÀÇ ³¡À» length ¸¸ÅÀÇ ±æÀÌ·Î ±¸ºÐÇÑ´Ù. µû¶ó¼ NULL ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ ¹ÙÀ̳ʸ® µ¥ÀÌŸ°¡ ÀÖ´Â queryµµ ¼öÇàÀ» ÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ mysql_query´Â ³»ºÎÀûÀ¸·Î strlen()¸¦ »ç¿ëÇÏÁö¸¸, mysql_real_query()´Â ±×·¸Áö ¾ÊÀ¸¹Ç·Î Á»´õ ºü¸£´Ù. ¸¶Âù°¡Áö·Î query¸¦ ¼º°øÀûÀ¸·Î ¼öÇàÇÏ¿´À» °æ¿ì 0À» ¸®ÅÏÇÑ´Ù. À§ÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© query¸¦ ¼öÇàÇÒ ¼ö°¡ ÀÖ´Ù. È£ÃâÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÏ´Ù. mysql_query(&mysql, "SELECT * FROM dome") ; À§¿Í °°ÀÌ query¸¦ ¼öÇàÇÏ¸é µÈ´Ù. query¸¦ ¼º°øÀûÀ¸·Î ¼öÇàÇß´Ù¸é, ÀÌÁ¦ °á°ú °ªÀ» ¾ò¾î ¿Í¾ß ÇÑ´Ù. * MYSQL_RES* mysql_store_result(MYSQL* mysql) * MYSQL_RES* mysql_use_result(MYSQL* mysql) À§ µÎ ÇÔ¼ö´Â ¸ðµÎ ¼¹ö·ÎºÎÅÍ °á°ú °ªÀ» ¾ò¾î ¿À´Âµ¥, Â÷ÀÌ´Â queryÀÇ °á°ú·Î ¸®ÅϵǴ ROWµéÀ» Çϲ¨¹ø¿¡ ¸ðµÎ ¼¹ö·ÎºÎÅÍ ¾ò¾î ¿Ã °ÍÀÎÁö(mysql_store_result()), ȤÀº Çѹø¿¡ ÇÑ °³ÀÇ ROW¸¦ ¾ò¾î ¿Ã °ÍÀÎÁö(mysql_use_result())ÀÇ Â÷ÀÌÀÌ´Ù. mysql_store_result()´Â ROWµéÀ» ÇÑ ²¨¹ø¿¡ ¸ðµÎ ¾ò¾î¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ¸Þ¸ð¸®¿¡ ÀúÀåÀ» ÇÑ´Ù. µû¶ó¼ ¸Å¹ø ROW¸¦ ¾ò¾î ¿À±â À§ÇØ ¼¹ö¿¡ Á¢±ÙÀ» ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î ¼Óµµ°¡ ºü¸£´Ù. ´ë½Å °á°ú·Î ³Ñ¾î¿Â ROWÀÇ Å©±â°¡ Ŭ °æ¿ì ¸¹Àº ¸Þ¸ð¸®°¡ ÇÊ¿äÇÏ°Ô µÈ´Ù. ¶Ç mysql_store_result()ÀÇ ÀåÁ¡Àº mysql_data_seek()³ª mysql_row_seek()¸¦ ÀÌ¿ëÇÏ¿© ÇöÀç ROW¿¡¼ ¾ÕÀ̳ª µÚÀÇ ROW·Î ÀÚÀ¯ÀÚÀç·Î ¿Ô´Ù °¬´Ù ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¶ÇÇÑ, mysql_num_rows()¸¦ ÀÌ¿ëÇÏ¿©, ¸î °³ÀÇ ROW°¡ ¸®ÅϵƴÂÁöµµ ¾Ë ¼ö ÀÖ´Ù. ¹Ý¸é mysql_use_result()´Â ÇÑ ¹ø¿¡ ÇÑ °³ÀÇ ROW¸¦ ¼¹ö·Î ºÎÅÍ °¡Á® ¿Â´Ù. µû¶ó¼ ¸Þ¸ð¸®¸¦ ¸¹ÀÌ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ÇÏÁö¸¸, mysql_store_result()¿Í °°Àº ÀåÁ¡À» °¡ÁöÁö ¾Ê´Â´Ù. ¸®ÅϵǴ ROW°¡ Ưº°È÷ Å©Áö ¾ÊÀº °æ¿ì¶ó¸é, º¸Åë mysql_store_result()¸¦ È£ÃâÇÏ´Â °ÍÀÌ ÁÁ´Ù. °á°ú °ªÀ» ¾ò¾î ¿Ô´Ù¸é mysql_fetch_row()¸¦ ÀÌ¿ëÇÏ¿© °¢°¢ÀÇ row¿¡ ÀÖ´Â µ¥ÀÌŸ µé¿¡ Á¢±ÙÀ» ÇÒ ¼ö ÀÖ´Ù. MYSQL_ROW mysql_fetch_row(MYSQL_ROW* result) result¿¡ ÀÖ´Â ROWµé¿¡¼ ÇÑ °³ÀÇ ROW¸¦ ¾ò¾î ¿Â´Ù. ÇÑ °³ÀÇ ROW¿¡¼ °¢°¢ÀÇ field´Â ¹è¿ ÇüÅ·Πµé¾î ÀÖ´Ù. ´õ ÀÌ»ó °¡Á®¿Ã ROW°¡ ¾øÀ¸¸é NULLÀ» ¸®ÅÏÇÑ´Ù. ÇöÀçÀÇ result¿¡ ¸î °³ÀÇ field°¡ ÀÖ´ÂÁö´Â mysql_num_fields()¸¦ ÀÌ¿ëÇÏ¿© ¾Ë ¼ö ÀÖ´Ù. int mysql_num_fields(MYSQL_RES* result) ÀÌÁ¦ ½ÇÁ¦·Î query¸¦ ¼öÇàÇÏ°í, °á°ú¸¦ Ãâ·ÂÇÏ¿© º¸ÀÚ. 1: #include <stdio.h> 2: #include <mysql.h> 3: #include <errno.h> 4: 5: void main(void) 6: { 7: MYSQL mysql ; 8: MYSQL_RES* res ; 9: MYSQL_ROW row ; 10: int fields ; 11: 12: mysql_init(&mysql) ; 13: 14: if(!mysql_real_connect(&mysql, NULL, "»ç¿ëÀÚ","¾ÏÈ£", "test" ,3306, (char *)NULL, 0)) 15: { 16: printf("%s\n",mysql_error(&mysql)); 17: exit(1) ; 18: } 19: 20: if(mysql_query(&mysql, "USE super") ) // mysql_query()´Â query ¼öÇà½Ã¿¡ ¿¡·¯°¡ ³ª°Ô µÇ¸é // 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÑ´Ù. { printf("%s\n", mysql_error(&mysql) ; exit(1) ; } 21: if(mysql_query(&mysql, "SELECT * FROM dome") ) { printf("%s\n", mysql_error(&mysql) ; exit(1) ; } 22: 23: res = mysql_store_result( &mysql ) ; 24: fields = mysql_num_fields(res) ; 25: 26: while( ( row = mysql_fetch_row( res ) )) 27: { 28: for( cnt = 0 ; cnt < fields ; ++cnt) 29: printf("%12s ", row[cnt]) ; 30: 31: printf("\n") ; 32: } 33: 34: mysql_free_result( res ) ; 35: mysql_close(&mysql) ; 36: } 12¹ø ÁÙÀº mysql_init()À» ÀÌ¿ëÇÏ¿© MYSQL °´Ã¼¸¦ ÃʱâÈ ÇÏ´Â °úÁ¤ÀÌ´Ù. 14¹ø ÁÙÀº ½ÇÁ¦ MySQL ¼¹ö¿Í ¿¬°áÀ» ½ÃµµÇÏ´Â ºÎºÐÀÌ´Ù. ¿¬°á¿¡ ½ÇÆÐÇÏ¿´À» °æ¿ì NULLÀ» ¸®ÅÏÇϹǷΠ15-18¹ø ÁÙ¿¡¼, ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù. 20¹ø ÁÙÀº "use super"¶ó´Â query¸¦ ÀÌ¿ëÇÏ¿© 'super' database¸¦ »ç¿ëÇϵµ·Ï ÁöÁ¤ÇÏ´Â ºÎºÐÀÌ´Ù. »ç¿ëÇÏ°íÀÚ ÇÏ´Â database´Â mysql_real_connect()¿¡¼ ÁöÁ¤À» ÇÒ ¼öµµ ÀÖ°í, ÇÁ·Î±×·¥ ½ÇÇà Áß¿¡ ¹Ù²Ù°íÀÚ ÇÒ ¶§´Â "use DBÀ̸§"°ú °°Àº query¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ°í, ȤÀº mysql_select_db()¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù. 21¹ø ÁÙÀº "SELECT * FROM dome" query¸¦ ¼öÇàÇÏ´Â ºÎºÐÀÌ´Ù. dome Å×À̺íÀÇ ¸ðµç Ä÷³À» ¸®ÅÏÇϵµ·Ï ÇÏ¿´´Ù. 23¹ø ÁÙÀº mysql_store_result()¸¦ ÀÌ¿ëÇÏ¿© °á°ú °ªÀ» ÀúÀåÇÏ´Â ºÎºÐÀÌ´Ù. 24¹ø ÁÙÀº mysql_num_fields()¸¦ ÀÌ¿ëÇÏ¿© ÇöÀç °á°ú °ª¿¡ ¸î °³ÀÇ Çʵ尡 ÀÖ´ÂÁö ¾Ë¾Æ ³»´Â ºÎºÐÀÌ´Ù. mysql_fetch_row()´Â ¹è¿ ÇüÅ·Π°¢ Çʵ忡 Á¢±ÙÀ» ÇϹǷΠ¹è¿ÀÇ À妽º¸¦ ¾Ë¾Æ³»¾ß Á¤È®È÷ µ¥ÀÌŸµéÀ» ¾ò¾î ¿Ã ¼ö ÀÖ´Ù. 26-32¹ø ÁÙÀº ½ÇÁ¦·Î °¢ ROWµé·ÎºÎÅÍ µ¥ÀÌŸ¿¡ Á¢±ÙÇÏ´Â ºÎºÐÀÌ´Ù. mysql_fetch_row()¸¦ ÀÌ¿ëÇÏ¿© °¢°¢ÀÇ ROW¸¦ ¾ò¾î ¿Â´Ù(´õÀÌ»ó °¡Á®¿Ã ROW°¡ ¾øÀ¸¸é NULLÀ» ¸®ÅÏÇÑ´Ù.) ±× ÈÄ for¹®À» ÀÌ¿ëÇÏ¿© ROWÀÇ °¢°¢ Çʵ带 Ãâ·ÂÇÏ¿´´Ù. 34-35¹ø ÁÙÀº res¿Í mysql¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÏ´Â ºÎºÐÀÌ´Ù. ÇÏÁö¸¸, query¿¡ µû¶ó¼´Â ROW¸¦ ¸®ÅÏÇÏÁö ¾Ê´Â queryµµ ÀÖ´Ù(UPDATE³ª DELETEµî) ¸¸¾à À§ÀÇ ¿¹Á¦¿¡¼ »ç¿ëÀÚ°¡ UPDATE µîÀ» ¼öÇàÇÏ¿´´Ù¸é, °ð¹Ù·Î Segmentation Fault°¡ ³ª¹ö¸°´Ù. À̶§´Â mysql_num_fields()¸¦ ÀÌ¿ëÇÏ¿©, ÇʵåÀÇ °³¼ö¸¦ Á¶»çÇÔÀ¸·Î½á ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù. query°¡ ROW¸¦ ¸®ÅÏÇÏ¿´´Ù¸é, Çʵå´Â ÃÖ¼ÒÇÑ 0º¸´Ù Å©±â ¶§¹®ÀÌ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸ÀÚ(Âü°í·Î ¹ØÀÇ ¿¹Á¦´Â MySQL Manual 19Àå¿¡¼ ¹ßÃéÇÑ ³»¿ëÀÌ´Ù.) MYSQL_RES* result ; unsigned int num_fields ; unsigned int num_rows ; if( mysql_query(&mysql, query_string) ) { // mysql_query´Â ¼º°øÀûÀ¸·Î // ¼öÇàÇÒ °æ¿ì 0À» ¸®ÅÏÇϹǷΠ// ÀÌ ºÎºÐÀÌ ½ÇÇà µÈ´Ù¸é // ¿¡·¯°¡ ÀÖ´Ù´Â ÀǹÌÀÌ´Ù. // ÀûÀýÇÑ ¿¡·¯ Çڵ鸵À» ÇØÁÖ´Ù. } else // ¼º°øÀûÀ¸·Î query°¡ ¼öÇàµÇ¾ú´Ù. { result = mysql_store_result( &mysql ) ; if( result ) // ¸®ÅÏµÈ ROW°¡ ÀÖ´Ù ! { num_fields = mysql_num_fields( result ) ; // rowÀÇ °ªÀ» ¾ò¾î¿À´Â ·çƾÀ» Áý¾î ³ÖÀ¸¸é µÈ´Ù. // ¸¶Áö¸·¿¡´Â mysql_free_result()¸¦ ÀÌ¿ëÇÏ¿© // ¸Þ¸ð¸®¸¦ ÇØÁ¦½ÃÅ°ÀÚ. } else // ¸®ÅÏµÈ ROW°¡ ¾ø´Ù. ROW¸¦ ¸®ÅÏÇÏÁö ¾Ê´Â query¸¦ ¼öÇàÇÏ¿´´ÂÁö // ȤÀº queryÀÇ ¼öÇà Áß¿¡ ¿¡·¯³ª ³µ´ÂÁö ¾Ë ¼ö ¾ø´Ù. { if( mysql_num_fields( &mysql ) == 0) { // ROW¸¦ ¸®ÅÏÇÏÁö ¾Ê´Â query¸¦ ¼öÇàÇÏ¿´´Ù. num_rows = mysql_affected_rows( &mysql ) ; // mysql_affected_rows()´Â DELETE µîÀÇ // query¿¡¼ ¸î °³ÀÇ ROW°¡ ¿µÇâÀ» ¹Þ¾Ò´ÂÁö // ¸®ÅÏÇÏ´Â ÇÔ¼öÀÌ´Ù. } else // ¹«¾ð°¡ À߸øµÈ °ÍÀÌ ÀÖ´Ù. fprintf("stderr, "Error : %s\n",mysql_error( &mysql) ) ; // mysql_error()´Â °¡Àå ÃÖ±ÙÀÇ ¿¡·¯¸¦ ¸®ÅÏÇÏ´Â ÇÔ¼öÀÌ´Ù. } } À§ÀÇ ¿¹Á¦¸¦ ÀÌ¿ëÇÏ¿©, °á°ú¸¦ ¸®ÅÏÇÏ´Â query µçÁö(SELECT), ¾Æ´Ï¸é °á°ú¸¦ ¸®ÅÏÇÏÁö ¾Ê´Â query µçÁö(UPDATE, DELECT µî) ¾î¶²ÇÑ query¶óµµ ¼öÇàÀ» ¼º°øÀûÀ¸·Î ÇÒ ¼ö ÀÖ´Ù. À̹ø¿¡´Â ROWÀÇ Çʵ忡 ´ëÇÑ Á¤º¸¸¦ ¾ò¾î ¿À´Â ¹æ¹ý¿¡ ´ëÇؼ ¾Ë¾Æ º¸ÀÚ. MYSQL_FIELD¶ó´Â ±¸Á¶Ã¼°¡ ¾²À̴µ¥ MYSQL_FIELD¿¡´Â ´ÙÀ½°ú °°Àº ¸â¹öµéÀÌ ÀÖ´Ù. char* name : ÇʵåÀÇ À̸§À» ³ªÅ¸³½´Ù. char* table : ÇöÀç ÇʵåÀÇ Å×À̺í À̸§À» ³ªÅ¸³½´Ù. char* def : ÇʵåÀÇ ±âº»°ªÀ» ³ªÅ¸³½´Ù. MYSQL_FIELD* mysql_fetch_field( MYSQL_RES* result ) : Çѹø¿¡ ÇϳªÀÇ MYSQL_FIELD¸¦ ¸®ÅÏÇÑ´Ù. MYSQL_FIELD* mysql_fetch_fields(MYSQL_RES* result ) : ¹è¿ÀÇ ÇüÅ·Π¸ðµç MYSQL_FIELD¸¦ ¸®ÅÏÇÑ´Ù. ¿¹1) MYSQL_FIELD *field ; while( (field = mysql_fetch_field(result) ) printf("field name %s\n", field -> name ) ; ¿¹2) unsigned int num_fields ; unsigned int i ; MYSQL_FIELD* fields ; num_fields = mysql_num_fields( result ) ; fields = mysql_fetch_fields( result ) ; for( i = 0 ; i < num_fields ; ++i) printf("field name %s\n", fields[i].name) ; À§ÀÇ µÎ °³ÀÇ ¿¹´Â ¸ðµÎ µ¿ÀÏ¾È °á°ú¸¦ Ãâ·ÂÇÑ´Ù. 6. ¹®Á¦ ÇØ°á À̹ø¿¡´Â C API¸¦ »ç¿ëÇÑ ¼Ò½º Äڵ带 ÄÄÆÄÀÏÇÒ ¶§ ȤÀº, ½ÇÇà µµÁß ¸¸³ª´Â ¹®Á¦Á¡À» ÇØ°áÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. 1) "con.c:2: mysql.h: ±×·± ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ¾øÀ½" ÀÌ °æ¿ì´Â mysql.hÀÇ °æ·Î¸¦ ãÀ» ¼ö ¾ø¾î¼ ³ª´Â ¿¡·¯ÀÌ´Ù. ´Ù½Ã Çѹø mysql.h°¡ ¾îµð¿¡ ÀÖ´ÂÁö È®ÀÎÀ» ÇÏ°í, -I¿É¼ÇÀ¸·Î ±× °æ·Î¸¦ ÁöÁ¤ÇØ ÁÖÀÚ. -I¿É¼Ç°ú °æ·Î´Â ºÙ¿© ½á¾ß ÇÑ´Ù. 2) "con.o(.text+0x11): undefined reference to `mysql_init'" À§¿Í °°ÀÌ 'undefined reference......' ¶ó°í ³ª¿À´Â ¿¡·¯´Â -lmysqlclient ¿É¼ÇÀ» ÁÖÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. 3) "ld: cannot open -lmysqlclient: ±×·± ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ¾øÀ½" À§ÀÇ ¿¡·¯´Â -L¿É¼Ç µÚ¿¡ ºÙÀº ¶óÀ̺귯¸®ÀÇ °æ·Î°¡ À߸ø µÇ¾ú±â ¶§¹®ÀÌ´Ù. libmysqlclient.so ÆÄÀÏÀÇ °æ·Î¸¦ ã¾Æ¼ ±× °æ·Î·Î ÁöÁ¤À» ÇØ ÁÖÀÚ. -I ¿É¼Ç°ú ¸¶Âù°¡Áö·Î -L°ú °æ·Î´Â ºÙ¿© ½á¾ß ÇÑ´Ù. À§ÀÇ ¿¡·¯µéÀº ÄÄÆÄÀϽÿ¡ ¿É¼ÇÀÌ À߸øµÇ¾úÀ» °æ¿ì ³ª¿À´Â ¿¡·¯ ¸Þ½ÃÁöÀÌ´Ù. °è¼ÓÇؼ ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ ³ª¿À´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸ÀÚ. 4) "Can't connect to local MySQL server (2)" À§ÀÇ ¿¡·¯´Â MySQLÀÇ ¼¹ö¿¡ ¿¬°áÀ» ÇÒ ¼ö ¾ø´Ù´Â ¸Þ½ÃÁö·Î¼, MySQL ¼¹öÀÇ µ¥¸óÀÌ ½ÇÇà ÁßÀÌÁö ¾ÊÀ» ¶§ ³ª¿À´Â ¸Þ½ÃÁöÀÌ´Ù. safe_mysqld ¸í·É µîÀ» ÀÌ¿ëÇÏ¿© µ¥¸óÀ» ½ÇÇà½ÃÄÑ ÁÖÀÚ. 5) "Access denied for user: 'rot@localhost' (Using password: YES)" Á¢±ÙÀÌ ±ÝÁöµÇ¾ú´Ù´Â ¸Þ½ÃÁö·Î¼ »ç¿ëÀÚ ¾ÆÀ̵𸦠À߸ø ÀÔ·ÂÇÏ¿´°Å³ª, ȤÀº ¾ÏÈ£¸¦ À߸ø ÀÔ·ÂÇÏ¿´À» ¶§ ³ª¿À´Â ¸Þ½ÃÁöÀÌ´Ù. MySQLÀÇ »ç¿ëÀÚ´Â ¸ðµÎ mysql databaseÀÇ user Å×ÀÌºí¿¡ ÀÖÀ¸¹Ç·Î, Âü°í¸¦ ÇÏ¿© Àûµµ·Ï ÇÏÀÚ. 6) "./sql: error in loading shared libraries libmysqlclient.so.6: cannot open shared object file: No such file or directory" MySQLÀÇ ¶óÀ̺귯¸®¸¦ ¿Áö ¸øÇÑ´Ù´Â ¸Þ½ÃÁöÀÌ´Ù. ÄÄÆÄÀÏ ÇÒ ¶§ MySQLÀÇ µ¿Àû ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Àµ¥, µ¿Àû ¶óÀ̺귯¸®À̹ǷΠ½ÇÇà½Ã¿¡µµ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ°Ô µÈ´Ù. libmysqlclient.so°¡ /usr/lib ȤÀº /usr/lib/mysql µð·ºÅ͸®¿¡ Á¸Àç ÇÏÁö ¾ÊÀ» °æ¿ì¿¡ ¹ß»ýÇÏ´Â ¹®Á¦ÀÌ´Ù. °¡Àå °£´ÜÇÑ ÇØ°á¹ýÀ¸·Î´Â ¸ðµç MySQL ¶óÀ̺귯¸®¸¦ /usr/lib/³ª /usr/local/lib ¹ØÀ¸·Î º¹»çÇÏ´Â °ÍÀε¥ º°·Î ÃßõÇÏ´Â ¹æ¹ýÀº ¾Æ´Ï´Ù. µÎ °¡Áö ¹æ¹ýÀÌ Àִµ¥, ¸ÕÀú ½Ã½ºÅÛÀÇ ¿î¿µÀÚ¶ó¸é, /etc/ld.so.conf ÆÄÀÏ¿¡ libmysqlclient.so°¡ ÀÖ´Â °æ·Î¸¦ Àû¾î ÁØ ÈÄ¿¡ ldconfig ¶ó´Â ¸í·ÉÀ» ÇÁ·ÒÇÁÆ®¿¡¼ ½ÇÇàÇÏ¿© ÁÖ¸é µÈ´Ù. ÀÌ·¯ÇÑ ±ÇÇÑÀÌ ¾ø´Â ÀÏ¹Ý »ç¿ëÀÚ¶ó¸é, ÀÚ½ÅÀÇ ½©ÀÇ È¯°æ º¯¼ö¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. °¢ÀÚÀÇ ½©ÀÌ ¸Â°Ô, LD_LIBRARY_PATH¸¦ libmysqlclient.so°¡ ÀÖ´Â µð·ºÅ͸®·Î ÁöÁ¤À» ÇØÁÖÀÚ. C ½© »ç¿ëÀÚ´Â setenv LD_LIBRARY_PATH °æ·Î¸í º» ½© »ç¿ëÀÚ´Â export LD_LIBRARY_PATH °æ·Î¸í ÀÌ·¸°Ô ÇØÁÖ¸é µÈ´Ù. º¸Åë À§ÀÇ 6°³ÀÇ ¿¡·¯°¡ °¡Àå ¸¹ÀÌ ¹ß»ýÇÑ´Ù. Ȥ½Ã, ÇØ°áÇÏÁö ¸øÇÒ ¿¡·¯°¡ ÀÖ´Ù¸é ÇÊÀÚ¿¡°Ô ¸ÞÀÏÀ» º¸³»¸é Ä£ÀýÈ÷ ´äº¯ÇØ ÁÖ°Ú´Ù. 7. Quick Reference À§¿¡¼ ¼³¸íÇÑ API¸¸À» °¡Áö°íµµ ¼¹ö¿¡ ¿¬°áÇÏ¿©, Query¸¦ ¼öÇàÇÏ°í ±× °á°ú¸¦ È®ÀÎ ÇÒ ¼ö ÀÖ´Ù. À̹ø¿¡´Â C APIÀÇ Áß¿äÇÑ ÇÔ¼öµéÀ» ¸ð¾Æ¼, ÇÔ¼öÀÇ ÇÁ·ÎÅäŸÀÔ°ú ÇÔ¼öÀÇ ±â´Éµé¿¡ ´ëÇؼ °£´ÜÈ÷ ¾Ë¾Æµµ·Ï ÇÏÀÚ. °³ÀÎÀûÀ¸·Î ±×´ÙÁö Áß¿äÇÏÁö ¾Ê´Ù°í »ý°¢µÇ´Â ÇÔ¼öµéÀº Á¦¿Ü½ÃÄ×À¸¹Ç·Î ¸ðµç C API¸¦ º¸°í ½ÍÀº µ¶ÀÚµéÀº MySQL Reference ManualÀÇ 19ÀåÀ» º¸±â ¹Ù¶õ´Ù. Âü°í·Î ÇÊÀÚ°¡ ÂüÁ¶ÇÑ ¸Þ´º¾óÀº MySQL 3.22.21¿ë ¸Þ´º¾óÀ̾ú´Ù. 1) my_ulonglong mysql_affected_rows(MYSQL* mysql) INSERT, UPDATE, DELETE µîÀÇ query·Î ¿µÇâÀ» ¹ÞÀº ROWÀÇ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. 2) void mysql_close(MYSQL* mysql) ¼¹ö¿ÍÀÇ ¿¬°áÀ» Á¾·áÇÑ´Ù. 3) void mysql_data_seek(MYSQL_RES* result, unsigned int offset) result¿¡¼ ÀÓÀÇÀÇ ROW¿¡ Á¢±ÙÀ» Çϵµ·Ï ÇÏ´Â ÇÔ¼öÀÌ´Ù. offsetÀÌ rowÀÇ ¹øÈ£¸¦ ³ªÅ¸³½´Ù. 0À̸é óÀ½ ROW, mysql_num_rows( result ) - 1 Àº ¸¶Áö¸· row¸¦ ³ªÅ¸³½´Ù. 4) unsigned int mysql_errno(MYSQL* mysql) °¡Àå ÃÖ±Ù¿¡ mysql¿¡ ÀÏ¾î³ ¿¡·¯ÀÇ ¹øÈ£¸¦ ¸®ÅÏÇÑ´Ù. 5) char* mysql_error(MYSQL* mysql) °¡Àå ÃÖ±Ù¿¡ ÀÏ¾î³ ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸®ÅÏÇÑ´Ù. 6) MYSQL_FIELD* mysql_fetch_field(MYSQL_RES* result) Çѹø È£ÃâÇÒ ¶§¸¶´Ù ÇÑ ³ªÀÇ Çʵ忡 ´ëÇÑ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. 7) MYSQL_FIELDS* mysql_fetch_fields(MYSQL_RES* result) ¹è¿ Çü´ë·Î resultÀÇ Çʵ忡 ´ëÇÑ Á¤º¸¸¦ ÇѲ¨¹ø¿¡ ¸®ÅÏÇÑ´Ù. 8) MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL* mysql, MYSQL_FIELD_OFFSET offset) ÀÓÀÇÀÇ Çʵ忡 Á¢±ÙÀ» Çϵµ·Ï ÇÑ´Ù. 9) MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES* result) ÇöÀç ÇʵåÀÇ offsetÀ» ¸®ÅÏÇÑ´Ù. 10) void mysql_free_result(MYSQL_RES* result) result¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù. 11) MYSQL* mysql_init(MYSQL* mysql) mysql °´Ã¼¸¦ ÃʱâÈ ÇÑ´Ù. ÀÎÀÚ°¡ NULLÀÌ¸é »õ·Î¿î MYSQL °´Ã¼¸¦ »ý¼ºÇÏ°í, ÃʱâÈ ÇÏ¿© ¸®ÅÏÇÑ´Ù. 12) MYSQL_RES* mysql_list_dbs(MYSQL* mysql, const char* wild) ÇöÀç ¼¹ö¿¡ ÀÖ´Â µ¥ÀÌŸº£À̽ºÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù. wild´Â MySQL¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â Á¤±Ô½ÄÀ» ³ªÅ¸³½´Ù. result = mysql_list_dbs( &mysql,"%" ) ´Â ¸ðµç µ¥ÀÌŸº£À̽º¸¦ ¸®ÅÏÇÏ´Â ¿¹ÀÌ´Ù.(%´Â '¸ðµç'À» ³ªÅ¸³½´Ù) 13) MYSQL_RES* mysql_list_tables(MYSQL* mysql, const char* wild) ÇöÀç µ¥ÀÌŸº£À̽º¿¡ ÀÖ´Â Å×À̺íµéÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù. 14) unsigned int mysql_num_fields(MYSQL_RES*result) ȤÀº unsigned int mysql_num_fields(MYSQL* mysql) ÇʵåÀÇ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. 15) my_ulonglong mysql_num_rows(MYSQL_RES* result) result¿¡ ÃÑ ¸î °³ÀÇ ROW°¡ ÀÖ´ÂÁö ¸®ÅÏÇÑ´Ù. query ¼öÇà ÈÄ mysql_store_result()¸¦ È£ÃâÇÏ¿´À» °æ¿ì¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ°í, mysql_use_result()´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. 16) int mysql_ping(MYSQL* mysql) ¼¹ö¿¡ ¿¬°á ÁßÀÎÁö¸¦ ¸®ÅÏÇÑ´Ù. ¿¬°áÀÌ ²÷¾î Á³À» °æ¿ì, ´Ù½Ã ¿¬°áÀ» ½ÃµµÇÑ´Ù. ¼¹ö¿Í ¿¬°áÀ» ÇÑ ÈÄ ¿À·§µ¿¾È °¡¸¸È÷ ÀÖÀ¸¸é ¼¹ö°¡ ¿¬°áÀ» ²÷¾î¹ö¸®´Âµ¥, ÀÌ·± °æ¿ì¿¡ »ç¿ëÇÑ´Ù. 17) int mysql_query(MYSQL* mysql, const char* query) query°¡ Æ÷ÀÎÆ® ÇÏ´Â Äõ¸®¸¦ ¼öÇàÇÑ´Ù. queryÀÇ ³¡Àº NULL ¹®ÀÚÀÌ´Ù. ¼º°øÀûÀ¸·Î query¸¦ ¼öÇàÇÏ¿´À¸¸é 0À» ¸®ÅÏÇÑ´Ù. 18) MYSQL* mysql_real_connect(MYSQL* mysql, const char* host, const char* user, const char* passwd, const char* db, uint port, const char* unix_socket, unit client_flag ) host¿ÍÀÇ ¿¬°áÀ» ½ÃµµÇÑ´Ù. ÀÎÀÚº°·Î ÀÚ¼¼ÇÑ ¼³¸íÀº À ºÎºÐ¿¡ µÇ¾î ÀÖ´Ù. 19) int mysql_real_query(MYSQL* mysql, const char* query, unsigned int length) mysql_query()ó·³ query¸¦ ¼öÇàÇϳª, queryÀÇ ³¡ÀÌ legnthÀÎ °ÍÀÌ ´Ù¸£´Ù. 20) MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES* result) ÇöÀç ROWÀÇ offsetÀ» ¸®ÅÏÇÑ´Ù. 21) int mysql_select_db(MYSQL* mysql, const char* db) »ç¿ëÇÏ°íÀÚ ÇÏ´Â database¸¦ º¯°æÇÑ´Ù. mysql_query()¸¦ ÀÌ¿ëÇÏ¿© "use dbÀ̸§" ÀÇ query¸¦ ¼öÇàÇصµ °°Àº °á°ú¸¦ ¾ò´Â´Ù. 22) int mysql_shutdown(MYSQL* mysql) ¼¹ö¸¦ Á¾·á½ÃŲ´Ù. ÇöÀç »ç¿ëÀÚ¿¡°Ô shutdown ±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÑ´Ù. 23) MYSQL_RES* mysql_store_result(MYSQL* mysql) queryÀÇ ¼öÇà °á°ú¸¦ ¼¹ö·ÎºÎÅÍ ÇÑ ¹ø¿¡ ¸ðµÎ ¹Þ¾Æ ¿Â´Ù. 24) MYSQL_RES* mysql_use_result(MYSQL* mysql) queryÀÇ ¼öÇà °á°ú¸¦ ¼¹ö·ÎºÎÅÍ ÇÑ °³ÀÇ ROW ¾¿ ¹Þ¾Æ ¿Â´Ù.