°£´ÜÇÏ°Ô³ª¸¶ 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 ¼¹öÀÇ µ¥¸óÀÌ ½ÇÇà ÁßÀÌÁö ¾ÊÀ» ¶§ ³ª¿À´Â ¸Þ½ÃÁöÀÔ´Ï´Ù.
;:»ç¿ëÀÚ ¾ÆÀ̵𸦠À߸ø ÀÔ·ÂÇϰųª, ¾ÏÈ£¸¦ À߸ø ÀÔ·ÂÇÏ¿´À» ¶§ ³ª¿À´Â ¸Þ½ÃÁöÀÔ´Ï´Ù. 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