°Ô½Ã¹° 1,358°Ç
   
MySQL For C API
±Û¾´ÀÌ : ÃÖ°í°ü¸®ÀÚ ³¯Â¥ : 2009-12-01 (È­) 10:49 Á¶È¸ : 15029
±ÛÁÖ¼Ò :
                                
°£´ÜÇÏ°Ô³ª¸¶ DB¿¡¼­ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ( °ÔÀÓ¿ë DB ·Îµµ °¡Àå ¸¹ÀÌ »ç¿ë µÇ´Â ) MySQL For C API ¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸°í ÃÖÈÄ·Î DB Á¢±ÙÀ» Çϱâ À§ÇÑ Á¾´Ü ¼­¹ö ±¸¼ºÀ¸·Î ¸¶ÃÄ º¼±î ÇÕ´Ï´Ù :)
ÀÌ°Í ¿ª½Ã ¾ðÁ¦ ³¡³¯Áö´Â ¾Ë ¼ö ¾ø½À´Ï´Ù ½Ã°£ ³¯ ¶§¸¶´Ù ÇÏ°Ú½À´Ï´Ù.
°³ÀÎÀûÀ¸·Î sql query¹®ÀÌ Á¦°¡ ¾àÇÑ °ü°è·Î :) Á¦´ë·Î µÈ ±ÛÀÌ µÉ °Å¶ó´Â »ý°¢Àº ¾È ÇÕ´Ï´Ù.
ÈÞ Á¤¸» °£¸¸¿¡ µé¾î¿À³×¿ä :) Á¦°¡ ³Ê¹« Á¤½ÅÀÌ ¾ø¾î¼­ ( ³í´Ù°í ¹Ù»¥½À´Ï´Ù. ±â´Ù¸®´Â ºÐÀº ÀüÇô ¾ø¾ú°ÚÁö¸¸ )
2¹ø¿¡ ³ª³ö¼­ Á¤¸® ÇÒ±î ÇÕ´Ï´Ù.
ù¹ø°·Î´Â ÇÔ¼ö ³ª¿­°ú Á¤¸®¸¦ ÇÏ°í µÎ¹ø°´Â ½ÇÀü ¼Ò½º·Î ³ª´²¼­ Á¤¸®ÇÒ±î ÇÕ´Ï´Ù.
½ÇÁ¦ ¸¹Àº apiÇÔ¼öµéÀÌ ÀÖÁö¸¸ ÀÚÁÖ »ç¿ëÇÏ´Â °Í ¸î°¡Áö¸¸ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
¾Æ.. VS6¿¡¼­´Â ÄÄÆÄÀÏÀ» À§Çؼ­´Â
MYSQL/INCLUDE Æú´õ¸¦ Æ÷ÇÔ½ÃÄÑ Áֽðí libmysql.lib¸¦ Æ÷ÇÔ ½ÃÅ°Áö ¾ÊÀ¸¸é ¹Ý°¡¿î ¸µÅ©¿¡·¯µéÀÌ ¶ã°Ì´Ï´Ù.
¸®´ª½º¿¡¼­´Â make ÆÄÀÏ¿¡ ¿©·¯°¡Áö¸¦ Ãß°¡ ½ÃÄѾ߰ÚÁÒ.
Á¤È®ÇÑ include ÆÄÀÏ °æ·Î¸¦ ãÀ¸·Á¸é,
 
 # find / -name mysql.h
 
Á¤È®ÇÑ °øÀ¯ ¶óÀ̺귯¸® ÆÄÀÏ °æ·Î¸¦ ãÀ¸·Á¸é,
 
 # find / -name libmysqlclient.so
 
ÇÏ½Ã¸é µË´Ï´Ù.
 
INC     = -I/usr/local/mysql/include/       // ±âº»ÀûÀÎ mysql.h À§Ä¡ÀÔ´Ï´Ù.
LIB     = -L/usr/local/mysql/lib/           // libmysql.lib ÀÌ ÀÖ´Â °÷ÀÇ À§Ä¡ ÀÔ´Ï´Ù.
LIBS    = -lmysqlclient                     // lib ÆÄÀÏÀÌÁÒ
$(TARGET) : $(OBJS)
$(CXX) $(LDFLAGS) $(LIBS) -o $(TARGET) $(OBJS)
¿Í °°ÀÌ Çϸé ÄÄÆÄÀÏ¿¡ ¹®Á¦°¡ ¾øÀ»°Ì´Ï´Ù.
ÄÄÆÄÀÏ ¾ê±â´Â ´ÙÀ½¿¡ Çѹø´õ ÀÚ¼¼ÇÏ°Ô makefile°ú ÇÔ²² ÇÏ°í ¿À´ÃÀº ÀÚÁÖ »ç¿ëÇÏ´Â ÇÔ¼ö¸¸ Á¤¸® ÇÏ°Ú½À´Ï´Ù.
 
| __mysql_init()__ | mysql ÃʱâÈ­ ÇÔ¼ö ÀÔ´Ï´Ù.  return °ªÀº ¿¬°á½Äº°°ª (MYSQL*) ½ÇÆÐÇϸé FALSE °¡ ¸®ÅÏ µË´Ï´Ù.
| __mysql_connect()__ ¶Ç´Â __mysql_real_connect()__ | mysql Á¢¼Ó ÇÔ¼ö ÀÔ´Ï´Ù.  mysql_real_connect() ÇÔ¼ö¸¸À» ÀÌ¿ëÇÕ´Ï´Ù.
| __mysql_select_db()__ | mysql DB ¼±Åà ÇÔ¼öÀÔ´Ï´Ù. ¾î¶² DB¸¦ ¼±Åà ÇÒ°ÍÀÎÁö ÇÏ´Â °ÍÀÌÁÒ
| __mysql_close()__ | mysqlÀ» ¼­¹ö¿ÍÀÇ Á¢¼ÓÀ» ²÷½À´Ï´Ù. 
| __mysql_query()__ | Äõ¸®¸¦ ½ÇÇà ½Ãŵ´Ï´Ù.
| __mysql_fetch_row()__ | Result Set ¿¡¼­ ÇϳªÀÇ ·Î¿ì¸¦ ¹è¿­·Î °¡Á® ¿É´Ï´Ù.
| __mysql_store_result()__ | Result Set À» ÀúÀå ÇÕ´Ï´Ù.
| __mysql_free_reslut()__ | Result Set À» ¸Þ¸ð¸®¿¡¼­ Á¦°Å ÇÕ´Ï´Ù.
| __mysql_errno()__ | ¿¡·¯ ¹øÈ£¸¦ ¸®ÅÏÇÕ´Ï´Ù.
| __mysql_error()__ | ¿¡·¯¿¡ ´ëÇÑ ¼³¸íÀ» ¸®ÅÏÇÕ´Ï´Ù.

ÀÌÁ¦´Â Àú À§¿¡ ÇÔ¼öµéÀ» ¾î¶»°Ô »ç¿ë Çϴ°¡¿¡ ´ëÇؼ­ °£´ÜÇÑ ¿¹¹®À» ÅëÇؼ­ ¾Ë¾Æ º¼±î ÇÕ´Ï´Ù.
Áö±Ý À§Å°¿¡¼­ ¹Ù·Î ÄÚµùÀ» ÇÏ´Â °ü°è·Î ÄÄÆÄÀÏÀÌ ¾È됄¼öµµ ÀÖ½À´Ï´Ù (__) ±×³É ¾î¶»°Ô »ç¿ëÇϴ°¡¸¸ ¾Ë¾Æ º¸ÀÚ´Â °Ì´Ï´Ù. Äð·°;;
 
#define dDB_HOST  "¾ÆÀÌÇÇ"
#define dDB_PORT  3306
#define dDB_ID    "¾ÆÀ̵ð"
#define dDB_PW    "db Æнº¿öµå"
#define dDB_NAME  "DB ¸í "
#include <mysql.h>
MYSQL* mysql;
MYSQL *DBConnect( char * host , int port , char *id , char *pw , char *dbName )
{
 MYSQL *db = NULL;
 db = mysql_init( (MYSQL*)NULL );  // ÃʱâÈ­ ÇÔ¼ö
 if( db )
 {
  if( mysql_real_connect( db, host, id, pw, NULL, port, (char*)NULL, 0 ) ) // DB Á¢¼Ó
  {
   if( mysql_select_db( db, dbName ) != 0 ) // DB ¼±ÅÃ
   {
    mysql_close( db );
    return NULL;
   }
  }
  else // connect error
  {
   printf( "Error %d ( %s )\n", mysql_errno( db ), mysql_error( db ) );
   mysql_close( db );
   return NULL;
  }
 }
 else
  return NULL;
 return db;
}
int main()
{
 mysql = DBConnect( dDB_HOST , dDB_PORT, dDB_ID , dDB_PW, dDB_DBNAME );
 if( ! mysql )
 {
  return -1 ;
 }
 char Query[128];
 sprintf( Query," select ......µîµî ÇÊ¿äÇÑ Äõ¸®µé" );
 if( !mysql_query ( mysql, Query)  )
 {
  MYSQL_RES *result = mysql_store_result( mysql );
  if( result )
  {
   MYSQL_ROW row;
   row = mysql_fetch_row( result );
                            // ±×¸®°í °¢ ¿øÇÏ´Â °ÍµéÀ» ¿©±â¿¡´Ù°¡ º¯¼ö¿¡ ÀúÀå ÇÑ´Ù.
                            // id  = atoi ( row[0] ) ; ÀÌ·± ½ÄÀ¸·Î ...
  }
  mysql_free_result( result );
 }
 mysql_close( mysql );
 return 0;
}
Á¤¸» °£¸¸¿¡ ¼öÁ¤ ÇÏ´Â ±º¿ä -_-+ 
¸î¸¶µð ´õ Ãß°¡ ÇÏ°íÀÚ ÀÌ·¸°Ô ±ÛÀ» ¿Ã¸®°Ô µÆ³×¿ä
 
$ gcc -o mysql mysql.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient
ÀÌ·±½ÄÀ¸·ÎÀûÀ¸¸é ÄÄÆÄÀÏÀÌ µÅ°Ú½À´Ï´Ù¿ä
ÀÌ·¸°Ô Çϸé mysql À̶ó´Â °Ô »ý±â°ÚÁÒ
¹¹ ´õ È®½ÇÇÏ°Ô ¾Ë¾Æ º¸°íÀÚ ÇÏ¸é ¿¬°á ¿Ï·á ³ª Á¾·á¿¡ ´ëÇؼ­ printf ¹®µîÀ» ÅëÇؼ­ ¾Ë¾Æº¸´øÁö¾Æ´Ï¸é ·Î±×ÆÄÀÏ·Î ³²±â¼Åµµ µÉµíÇÏ°í¿ä
¿©±â¼­ ÁÖÀÇ ÇÒÁ¡Àº Mysql For C API¸¦ »ç¿ëÇÒ¶§´Â -lmysqlclient ÀÌ ³à¼®ÀÔ´Ï´Ù. ¶óÀ̺귯¸®¸¦ ¿¬°á ÇÏ´Â ³à¼®ÀÌÁÒ.
libmysqlclient.so ¸¦ ã¾Æ¼­ ¸µÅ© ½ÃÄÑ ÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
ÀÚ ¿©±â¼­ C API ÀÇ ÀÚ·áÇü¿¡ ´ëÇؼ­ ¸î°¡Áö ¾Ë¾Æ º¸°Ú½À´Ï´Ù.

|MYSQL      |Database¿ÍÀÇ ¿¬°áÀ» °ü¸®ÇÏ´Â ±¸Á¶Ã¼ÀÔ´Ï´Ù.
|MYSQL_RES  |SELECT µî °á°ú¸¦ ¸®ÅÏÇÏ´Â queryÀÇ °á°ú¸¦ ³ªÅ¸³»´Â ÀÚ·áÇüÀÔ´Ï´Ù.
|MYSQL_ROW  |MYSQL_RES¿¡¼­ ÇϳªÀÇ ·¹Äڵ徿 °ªÀ» ¾ò¾î ¿Ã¶§ ¾²ÀÌ´Â ÀÚ·áÇüÀÔ´Ï´Ù.
|MYSQL_FIELD|ÇʵåÀÇ À̸§°ú ÇʵåÀÇ Å¸ÀÔ µî Çʵ忡 °üÇÑ Á¤º¸¸¦ ÀúÀåÇÏ´Â ÀÚ·áÇüÀÔ´Ï´Ù.
 
(¿¡·¯ ¹®±¸´Â mysql for C API ¹®¼­¿¡¼­ ¹ß°ßÀ» Çߴµ¥ Ãâó¸¦ ¸ð¸£°Ú±º¿ä )
 
À̹ø¿¡´Â  Mysql For C API ¸¦ ÀÌ¿ëÇϸ鼭 ³ª¿Ã ¿¡·¯µé¿¡ ´ëÇؼ­ ´ëóÇغ¸±â À§Çؼ­ ¿¡·¯¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸°Ú½À´Ï´Ù.
 
1) "msyql.c:2: mysql.h: ±×·± ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ¾øÀ½"
;:ÀÌ °æ¿ì´Â mysql.hÀÇ °æ·Î¸¦ ãÀ» ¼ö ¾ø¾î¼­ ³ª´Â ¿¡·¯ÀÔ´Ï´Ù. ´Ù½Ã Çѹø mysql.h°¡ ¾îµð¿¡ ÀÖ´ÂÁö È®ÀÎÀ» ÇÏ°í, -I¿É¼ÇÀ¸·Î ±× °æ·Î¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·²¶§ whereis ³ª find µîÀ» À߽Ἥ ã¾Æ º¾½Ã´Ù. ¹¹ ±âº»ÀûÀ¸·Î ±âº» °æ·Î¿¡¼³Ä¡ÇÏ¸é ¾Æ¹« ¹®Á¦ ¾ø½À´Ï´Ù.
 
2) "mysql.o(.text+0x11): undefined reference to `mysql_init'"
;:À§¿Í °°ÀÌ 'undefined reference......' ¶ó°í ³ª¿À´Â ¿¡·¯´Â -lmysqlclient ¿É¼ÇÀ» ¾ÈÁ༭ »ý±â´Â ¿¡·¯ ÀÔ´Ï´Ù.
 
3) "ld: cannot open -lmysqlclient: ±×·± ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ¾øÀ½"
;:À§ÀÇ ¿¡·¯´Â -L¿É¼Ç µÚ¿¡ ºÙÀº ¶óÀ̺귯¸®ÀÇ °æ·Î°¡ À߸ø µÇ¾úÀ»¶§ »ý±é´Ï´Ù. libmysqlclient.so ÆÄÀÏÀÇ °æ·Î¸¦ ã¾Æ¼­ ±× °æ·Î ÁöÁ¤À» ÇØÁÖ½Ã¸é µË´Ï´Ù.
 
4) "Can't connect to local MySQL server "
;:À§ÀÇ ¿¡·¯´Â MySQLÀÇ ¼­¹ö¿¡ ¿¬°áÀ» ÇÒ ¼ö ¾ø´Ù´Â ¸Þ½ÃÁö·Î¼­, MySQL ¼­¹öÀÇ µ¥¸óÀÌ ½ÇÇà ÁßÀÌÁö ¾ÊÀ» ¶§ ³ª¿À´Â ¸Þ½ÃÁöÀÔ´Ï´Ù.
 
5) "Access denied for user: 'root@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ÀǶóÀ̺귯¸®¸¦ »ç¿ëÇϴµ¥, µ¿Àû ¶óÀ̺귯¸®À̹ǷΠ½ÇÇà½Ã¿¡µµ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ°Ô µÈ´Ù. ibmysqlclient.so°¡ /usr/lib ȤÀº /usr/lib/mysql µð·ºÅ͸®¿¡ Á¸Àç ÇÏÁö ¾ÊÀ» °æ¿ì¿¡ ¹ß»ýÇÏ´Â ¹®Á¦ÀÔ´Ï´Ù.  /etc/ld.so.conf ÆÄÀÏ¿¡libmysqlclient.so°¡ ÀÖ´Â °æ·Î¸¦ Àû¾î ÁØ ÈÄ¿¡ ldconfig ¶ó´Â ¸í·ÉÀ» ÇÁ·ÒÇÁÆ®¿¡¼­ ½ÇÇàÇÏ¿© ÁÖ¸é µË´Ï´Ù.
¿øº»Ãâó : http://ngps.net/ngpiki/index.php?display=MySqlForCApi

À̸§ Æнº¿öµå
ºñ¹Ð±Û (üũÇÏ¸é ±Û¾´À̸¸ ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.)
¿ÞÂÊÀÇ ±ÛÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä.
   

 



 
»çÀÌÆ®¸í : ¸ðÁö¸®³× | ´ëÇ¥ : ÀÌ°æÇö | °³ÀÎÄ¿¹Â´ÏƼ : ·©Å°´åÄÄ ¿î¿µÃ¼Á¦(OS) | °æ±âµµ ¼º³²½Ã ºÐ´ç±¸ | ÀüÀÚ¿ìÆí : mojily°ñ¹ðÀÌchonnom.com Copyright ¨Ï www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.