|
 |
À¸Ä¿µ¼À¸ |
|
| |
|
|
|
|
 |
×ÊÁÏËÑË÷ |
|
| |
|
|
|
|
 |
ÈÈÃÅÎÄÕÂ |
|
| |
|
|
|
|
 |
×îÐÂÎÄÕ |
|
| |
|
|
|
| |
| |
|
|
|
| |
| ÔÚMySQLÊý¾Ý¿âÖÐʹÓÃCÖ´ÐÐSQLÓï¾ä |
|
[ ×÷Õß: ¼ÓÈëʱ¼ä:2005-11-25 10:20:19 À´×Ô:
] | |
|
ÓëPostgreSQLÏàËÆ£¬¿ÉʹÓÃÐí¶à²»Í¬µÄÓïÑÔÀ´·ÃÎÊMySQL£¬°üÀ¨C¡¢C++¡¢JavaºÍPerl¡£´ÓProfessional Linux ProgrammingÖеÚ5ÕÂÓйØMySQLµÄÏÂÁÐÕ½ÚÖУ¬Neil MatthewºÍRichard StonesʹÓÃÏ꾡µÄMySQL C½Ó¿ÚÏòÎÒÃǽéÉÜÁËÈçºÎÔÚMySQLÊý¾Ý¿âÖÐÖ´ÐÐSQLÓï¾ä¡£ËûÃǽ«ÌÖÂÛ·µ»ØÊý¾ÝµÄÓï¾ä£¬ÀýÈçINSERTÒÔ¼°²»·µ»ØÊý¾ÝµÄÓï¾ä£¬ÀýÈçUPDATEºÍDELETE¡£È»ºó£¬ËûÃǽ«±àд´ÓÊý¾Ý¿â¼ìË÷Êý¾ÝµÄ¼òµ¥³ÌÐò¡£
Ö´ÐÐSQLÓï¾ä
ÏÖÔÚ£¬ÎÒÃÇÒѾÓÐÁËÒ»¸öÁ¬½Ó£¬²¢ÇÒÖªµÀÈçºÎ´¦Àí´íÎó£¬ÊÇʱºòÌÖÂÛʹÓÃÎÒÃǵÄÊý¾Ý¿âÀ´×÷һЩʵ¼Ê¹¤×÷ÁË¡£Ö´ÐÐËùÓÐÀàÐ͵ÄSQLµÄÖ÷¹Ø¼ü×ÖÊÇmysql_query£º
int mysql_query(MYSQL *connection, const char *query)
ÕýÈçÄúËù¼û£¬Ëü·Ç³£¼òµ¥¡£Ëüȡһ¸öÖ¸ÏòÁ¬½Ó½á¹¹µÄÖ¸ÕëºÍ°üº¬ÒªÖ´ÐеÄSQLµÄÎı¾×Ö·û´®£»ÓëÃüÁîÐй¤¾ß²»Í¬£¬½«²»Ê¹ÓýáÊø·ÖºÅ¡£³É¹¦Ö®ºó£¬·µ»Ø0¡£ÔÚÐèÒª°üº¬¶þ½øÖÆÊý¾ÝµÄÌØÊâÇé¿öÏ£¬¿ÉÒÔʹÓÃÏà¹ØµÄº¯Êý£¬mysql_real_query¡£ËäÈ»³öÓÚ±¾ÕµÄÄ¿µÄ£¬ÎÒÃǽöÐèÒªÌÖÂÛmysql_query¡£
²»·µ»ØÊý¾ÝµÄSQLÓï¾ä
ÎÒÃǽ«ÏÈÌÖÂÛUPDATE¡¢DELETEºÍINSERTÓï¾ä¡£ÒòΪËüÃDz»·µ»ØÊý¾Ý£¬ËùÒÔ¸üÒ×ÓÚʹÓá£
ÕâÀïÎÒÃǽ«½éÉܵÄÁíÒ»¸öÖØÒªº¯ÊýÊǼì²éÊÜÓ°ÏìµÄÐÐÊýµÄº¯Êý£º
my_ulonglong mysql_affected_rows(MYSQL *connection);
¿ÉÄܹØÓÚÕâÒ»º¯ÊýµÄ×îÏÔ¶øÒ×¼ûµÄʾÍÊÇÆä·ÇͬѰ³£µÄ·µ»Ø½á¹û¡£ÓÉÓÚ¿ÉÒÆÖ²ÐÔÔÒò£¬ÕâÊÇÒ»¸öÌØÊâµÄÎÞ·ûºÅÀàÐÍ¡£ÎªÁËÔÚprintfÖÐʹÓ㬽¨Ò齫ÆäÇ¿ÖÆ×ª»»³ÉʹÓÃ%lu¸ñʽ¹æ·¶µÄÎÞ·ûºÅ³¤ÕûÊý¡£Õâ¸öº¯Êý·µ»ØÊÜÒÔǰµÄUPDATE¡¢INSERT»òDELETE²éѯӰÏìµÄÐÐÊý£¬ÕâЩ²éѯÊÇʹÓÃmysql_queryÖ´Ðеġ£
ͨ³£¶ÔÓÚmysql_º¯Êý£¬·µ»ØÂë0±íʾûÓÐÐÐÊÜÓ°Ï죻ÕýÊý±íʾʵ¼Ê½á¹û£¬Í¨³£ÊÇÊÜÓ°ÏìµÄÐÐÊý¡£
ÈçǰËùÊö£¬µ±Ê¹ÓÃmysql_affected_rowsʱ¿ÉÄܳöÏÖδÆÚÍûµÄ½á¹û¡£ÈÃÎÒÃÇÏÈÌÖÂÛÊÜINSERTÓï¾äÓ°ÏìµÄÐÐÊý£¬Ëü½«°´Ô¤ÆÚ½øÐвÙ×÷¡£½«ÏÂÁдúÂëÌí¼Óµ½³ÌÐò connect2.c ÖУ¬²¢ÇÒ³ÆÆäΪinsert1.c£º
#include #include #include "mysql.h" int main(int argc, char *argv[]) { MYSQL my_connection;
int res;
mysql_init(&my_connection); if (mysql_real_connect(&my_connection, "localhost", "rick", "bar", "rick", 0, NULL, 0)) { printf("Connection successn");
res = mysql_query(&my_connection, "INSERT INTO children(fname,age), VALUES(¡¯Ann¡¯,3)"); if (!res) { printf("Inserted %lu rowsn", (unsigned long)mysql_affected_rows(&my_connection)); } else { fprintf(stderr, "Insert error %d: sn",mysql_errno , (&my_connection), mysql_error(&my_connection)); } mysql_close(&my_connection); } else { fprintf(stderr, "Connection failedn"); if (mysql_errno(&my_connection)) { fprintf(stderr, "Connection error %d: %sn", mysql_errno(&my_connection), mysql_error(&my_connection)); } } return EXIT_SUCCESS; }
ÕýÈçÔ¤ÆÚ£¬²åÈëµÄÐÐÊýΪ1¡£
ÏÖÔÚ£¬ÎÒÃǸü¸Ä´úÂ룬ËùÒÔ ¡¯insert¡¯ ²¿·Ö±»Ìæ»»³É£º
mysql_errno(&my_connection), mysql_error(&my_connection)); } }
res = mysql_query(&my_connection, "UPDATE children SET AGE = 4 WHERE fname = ¡¯Ann¡¯");
if (!res) { printf("Updated %lu rowsn", (unsigned long)mysql_affected_rows(&my_connection)); } else { fprintf(stderr, "Update error %d: %sn", mysql_errno(&my_connection), mysql_error(&my_connection)); }
ÏÖÔÚ¼ÙÉè×Ó±íÖÐÓеÄÊý¾Ý£¬ÈçÏ£º
childnofnameage 1 2 3 4 5 6 7 8 9 10 11Jenny Andrew Gavin Duncan Emma Alex Adrian Ann Ann Ann Ann14 10 4 2 0 11 5 3 4 3 4
Èç¹ûÎÒÃÇÖ´ÐÐupdate1£¬Ï£Íû±¨¸æµÄÊÜÓ°ÏìÐÐÊýΪ4£¬µ«ÊÇʵ¼ÊÉϳÌÐò±¨¸æ2£¬ÒòΪËü½ö±ØÐë¸ü¸Ä2ÐУ¬ËäÈ»WHERE×Ó¾ä±êʶÁË4ÐС£Èç¹ûÏëÈÃmysql_affected_rows±¨¸æµÄ½á¹ûΪ4Õâ¿ÉÄÜÊÇÊìϤÆäËüÊý¾Ý¿âµÄÈËËùÆÚÍûµÄ£©£¬ÔòÐèÒª¼Çס½«CLIENT_FOUND_ROWS±êÖ¾´«µÝµ½mysql_real_connect£¬ÔÚ update2.cÖеijÌÐòÈçÏ£º
if (mysql_real_connect(&my_connection, "localhost", "rick", "bar", "rick", 0, NULL, CLIENT_FOUND_ROWS)) {
Èç¹ûÎÒÃÇÔÚÊý¾Ý¿âÖи´Î»Êý¾Ý£¬È»ºóÔËÐдøÓÐÕâÖÖÐ޸ĵijÌÐò£¬ÔòËü±¨¸æµÄÐÐÊýΪ4¡£
º¯Êýmysql_affected_rows»¹ÓÐ×îºóÒ»¸öÆæ¹ÖÖ®´¦£¬Ëü·¢ÉúÔÚ´ÓÊý¾Ý¿âÖÐɾ³ýÊý¾Ýʱ¡£Èç¹ûʹÓÃWHERE×Ӿ䣬Ôòmysql_affected_rows½«°´Ô¤ÆÚ·µ»ØÉ¾³ýÐÐÊý¡£µ«ÊÇ£¬Èç¹ûûÓÐWHERE×Ӿ䣬Ôòɾ³ýËùÓÐÐУ¬±¨¸æÊÜÓ°ÏìµÄÐÐÊýȴΪ0¡£ÕâÊÇÒòΪÓÉÓÚЧÂÊÔÒòÓÅ»¯É¾³ýÕû¸ö±í¡£ÕâÖÖÐÐΪ²»ÊÜCLIENT_FOUND_ROWSÑ¡Ïî±êÖ¾µÄÓ°Ïì¡£ »ØÊý¾ÝµÄÓï¾ä
ÏÖÔÚÊÇʱºòÌÖÂÛSQLµÄ×îÆÕ±éÓ÷¨ÁË£¬´ÓÊý¾Ý¿â¼ìË÷Êý¾ÝµÄSELECTÓï¾ä¡£
MySQL »¹Ö§³Ö·µ»Ø½á¹ûµÄSHOW¡¢DESCRIBEºÍEXPLAIN SQLÓï¾ä£¬µ«ÊÇÕâÀï²»¿¼ÂÇËüÃÇ¡£°´¹ßÀý£¬ÊÖ²áÖаüº¬ÕâЩÓï¾äµÄ˵Ã÷¡£
Äú½«»á´ÓPostgreSQLÕÂ¼ÇÆð£¬¿ÉÒÔ´ÓPQexecÖеÄSQL SELECT Óï¾ä¼ìË÷Êý¾Ý£¬ÕâÀïÂíÉÏ»ñÈ¡ËùÓÐÊý¾Ý£¬»òÕßʹÓÃÓαê´ÓÊý¾Ý¿âÖÐÖðÐмìË÷Êý¾Ý£¬ÒÔ±ã¸ã¶¨´óÊý¾Ý¡£
ÓÉÓÚÍêÈ«ÏàͬµÄÔÒò£¬MySQLµÄ¼ìË÷·½·¨¼¸ºõÍêÈ«Ïàͬ£¬ËäÈ»Ëüʵ¼ÊÉϲ»ÓÃÓαêµÄÐÎʽÃèÊöÖðÐмìË÷¡£µ«ÊÇ£¬ËüÌṩÁËËõСÕâÁ½ÖÖ·½·¨¼ä²îÒìµÄAPI£¬Èç¹ûÐèÒª£¬Ëüͨ³£Ê¹Á½ÖÖ·½·¨µÄ»¥»»¸ü¼ÓÈÝÒס£
ͨ³££¬´ÓMySQLÊý¾Ý¿âÖмìË÷Êý¾ÝÓÐ4¸ö½×¶Î£º
·¢³ö²éѯ
¼ìË÷Êý¾Ý
´¦ÀíÊý¾Ý
Ö´ÐÐËùÐèµÄÈκÎÕûÀí
ÏóÒÔǰһÑù£¬ÎÒÃÇʹÓÃmysql_query·¢³ö²éѯ¡£Êý¾Ý¼ìË÷ÊÇʹÓÃmysql_store_result»òmysql_use_resultÍê³ÉµÄ£¬ÕâÈ¡¾öÓÚÏëÈçºÎ¼ìË÷Êý¾Ý£¬ËæºóʹÓÃmysql_fetch_rowµ÷ÓÃÐòÁÐÀ´´¦ÀíÊý¾Ý¡£×îºó£¬±ØÐëµ÷ÓÃmysql_free_resultÒÔÔÊÐíMySQLÖ´ÐÐÈκÎËùÐèµÄÕûÀí¡£
È«²¿Á¢¼´Êý¾Ý¼ìË÷µÄº¯Êý
¿ÉÒÔ´ÓSELECTÓï¾ä£¨»òÆäËû·µ»ØÊý¾ÝµÄÓï¾ä£©ÖмìË÷ÍêËùÓÐÊý¾Ý£¬ÔÚµ¥Ò»µ÷ÓÃÖУ¬Ê¹ÓÃmysql_store_result£º
MYSQL_RES *mysql_store_result(MYSQL *connection);
±ØÐëÔÚmysql_query¼ìË÷Êý¾Ýºó²ÅÄܵ÷ÓÃÕâ¸öº¯Êý£¬ÒÔÔÚ½á¹û¼¯Öд洢¸ÃÊý¾Ý¡£Õâ¸öº¯Êý´Ó·þÎñÆ÷ÖмìË÷ËùÓÐÊý¾Ý²¢Á¢¼´½«Ëü´æ´¢ÔÚ¿Í»§»úÖС£Ëü·µ»ØÒ»¸öÖ¸ÏòÒÔǰÎÒÃÇ´ÓδÓöµ½¹ýµÄ½á¹¹£¨½á¹û¼¯½á¹¹£©µÄÖ¸Õë¡£Èç¹ûÓï¾äʧ°Ü£¬Ôò·µ»ØNULL¡£
ʹÓõȼ۵ÄPostgreSQLʱ£¬Ó¦¸ÃÖªµÀ·µ»ØNULLÒâζ×ÅÒѾ·¢ÉúÁË´íÎ󣬲¢ÇÒÕâÓëδ¼ìË÷µ½Êý¾ÝµÄÇé¿ö²»Í¬¡£¼´Ê¹£¬·µ»ØÖµ²»ÊÇNULL£¬Ò²²»Òâζ×ŵ±Ç°ÓÐÊý¾ÝÒª´¦Àí¡£
Èç¹ûδ·µ»ØNULL£¬Ôò¿ÉÒÔµ÷ÓÃmysql_num_rows²¢ÇÒ¼ìË÷ʵ¼Ê·µ»ØµÄÐÐÊý£¬Ëüµ±È»¿ÉÄÜÊÇ0¡£
my_ulonglong mysql_num_rows(MYSQL_RES *result);
Ëü´Ómysql_store_resultÈ¡µÃ·µ»ØµÄ½á¹û½á¹¹£¬²¢ÇÒÔڸýá¹û¼¯Öзµ»ØÐÐÊý£¬ÐÐÊý¿ÉÄÜΪ0¡£Èç¹ûmysql_store_result³É¹¦£¬Ôòmysql_num_rowsÒ²×ÜÊdzɹ¦µÄ¡£
ÕâÖÖmysql_store_resultºÍmysql_num_rowsµÄ×éºÏÊǼìË÷Êý¾ÝµÄÒ»ÖÖ¼ò±ã²¢ÇÒÖ±½ÓµÄ·½·¨¡£Ò»µ©mysql_store_result³É¹¦·µ»Ø£¬ÔòËùÓвéѯÊý¾Ý¶¼ÒѾ´æ´¢ÔÚ¿Í»§»úÉϲ¢ÇÒÎÒÃÇÖªµÀ¿ÉÒÔ´Ó½á¹û½á¹¹ÖмìË÷Ëü£¬¶ø²»Óõ£ÐĻᷢÉúÊý¾Ý¿â»òÍøÂç´íÎó£¬ÒòΪ¶ÔÓÚ³ÌÐòËùÓÐÊý¾Ý¶¼ÊDZ¾µØµÄ¡£»¹¿ÉÒÔÁ¢¼´·¢ÏÖ·µ»ØµÄÐÐÊý£¬Ëü¿ÉÒÔʹ±àÂë¸ü¼ò±ã¡£ÈçǰËùÊö£¬Ëü½«ËùÓнá¹ûÁ¢¼´µØ·¢Ëͻؿͻ§»ú¡£¶ÔÓÚ´ó½á¹û¼¯£¬Ëü¿ÉÄܺķѴóÁ¿µÄ·þÎñÆ÷¡¢ÍøÂçºÍ¿Í»§»ú×ÊÔ´¡£ÓÉÓÚÕâЩÔÒò£¬Ê¹Óøü´óµÄÊý¾Ý¼¯Ê±£¬×îºÃ½ö¼ìË÷ÐèÒªµÄÊý¾Ý¡£²»¾Ã£¬ÎÒÃǽ«ÌÖÂÛÈçºÎʹÓÃmysql_use_resultº¯ÊýÀ´Íê³É¸Ã²Ù×÷¡£
Ò»µ©¼ìË÷ÁËÊý¾Ý£¬Ôò¿ÉÒÔʹÓÃmysql_fetch_rowÀ´¼ìË÷Ëü£¬²¢ÇÒʹÓÃmysql_data_seek¡¢mysql_row_seek¡¢mysql_row_tell²Ù×÷½á¹û¼¯¡£ÔÚ¿ªÊ¼¼ìË÷Êý¾Ý½×¶Î֮ǰ£¬ÈÃÎÒÃÇÏÈÌÖÂÛÒ»ÏÂÕâЩº¯Êý¡
LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ÔʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶ÓÀ´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ |
|
|
|
|
|