Xlight FTPªA°È¾¹¥i¥H°t¸m¨Ï¥Î¼Æ¾Ú®w¦sÀx¹Lµ{»{ÃÒftp¥Î¤á. ¥¦´£¨Ñ¤FÆF¬¡©Ê¥H¶°¦¨Xlight FTPªA°È¾¹¨ì¨ä¥LÃþ«¬¼Æ¾Ú®wÀ³.
¦b§Ú̶}©l¦sÀx¹Lµ{«ü«n¤§«e, §ÚÌ»Ýn¸ÑÄÀ¤@¨ÇÃö©óODBC¥\¯à¦p¦ó¦bXlight FTPªA°È¾¹¤º³¡¹B§@.
Xlight FTPªA°È¾¹¨Ï¥Î2Ӽƾڮwªí¦sÀx¥Î¤á³]¸m. Xlight FTPªA°È¾¹ODBC¥\¯à³Ì¥Dnªºªí¬O"acct_table", ¥¦¦sÀx¤@ӥΤá°ò¥»ªº³]¸m, ¨Ò¦phost_id, host_port, ¥Î¤á¦W, ¤f¥O©M¥Lªº²Õ, ¥D¥Ø¿ý©M¥D¥Ø¿ýÅvµ¥. ²Ä¤GÓªí¬O"acct_param_table", ¥Ñ¦b"acct_table"¬d¸ßªð¦^ªº"param_index"¦C°µ¯Á¤Þ. ¥¦¦sÀx¥Î¤áªº¨ä¥L³]¸m, ³o¨Ç³]¸m¥i¥H§@¬°©Ò¦³¥Î¤áªº°Ñ¼Æ¼ÒªO.
·í¥Î¤áµn¿ý¨ìFTPªA°È¾¹, Xlight FTPªA°È¾¹¸Ì±Nµo°e¤G¦¸SQL¬d¸ß¨ì³oӼƾڮw, ÅçÃÒ¥Lªº¤f¥O©MÀò±o¥Lªº³]¸m. ²Ä¤@¦¸SQL¬d¸ß¥Î³oӥΤá¦W©M¤f¥O, ¦b¼Æ¾Ú®w¬d§ä²Å¦X°O¿ý, ¨Ã¥BÀò±o°ò¥»ªº°Ñ¼Æ, ¨Ò¦p"home_path", "home_perm"µ¥. ²Ä¤@¦¸SQL¬d¸ßªð¦^ªº"param_index"Ȭ°¯Á¤Þ±N¥Î©ó²Ä¤G¦¸SQL¬d¸ß. ¦pªG²Ä¤@¦¸SQL¬d¸ß¤£ªð¦^"param_index", Xlight FTPªA°È¾¹±N¤£·|µo°e²Ä¤G¦¸SQL¬d¸ß. ²Ä¤G¦¸SQL¬d¸ß±N¬d¸ß¼Æ¾Ú®wªí¡uacct_param_table¡vÀò±o¦¹¥Î¤áªº§ó¦h°Ñ¼Æ.
³\¦h¼Æ¾Ú®w¨t²Î¤ä«ù¦sÀx¹Lµ{. §Ų́ϥÎMySQL¼Æ¾Ú®w§@¬°¨Ò¤l. ¨Ï¥ÎMySQL¤§«e, §A¥²¶·¤U¸ü³Ì·sªº MySQL ODBC Driver - 3.51.16 ©ÎªÌ§ó°ªª©¥». §_«h,¦]¬°MySQLªºBug #27544, ²Ä¤G¦¸SQL¬d¸ß±N·|¥¢±Ñ. ¨ä¥LÃþ«¬ªº¼Æ¾Ú®w,§A¤]³Ì¦n¤É¯Å¼Æ¾Ú®w¬ÛÀ³ªºODBC Driver¨ì³Ì·sª©¥».
¦b¨Ï¥Î¦sÀx¹Lµ{¤§«e¥²¶·³]¸m¼Æ¾Ú®wODBC¼Æ¾Ú·½. §A¥i¥H°Ñ¦Ò³o¸Ìªº³]¸m¨BÆJ.
¦b¥»¨Ò¤¤, §Ú̦³¤@Óªí"account_info"¦b³oӼƾڮw¸Ì. ¦¹ªí¬O¨ä¥L¼Æ¾Ú®wÀ³¥Îµ{§Ç©Ò¨Ï¥Î, ¥¦¦sÀx¥Î¤á¦W, ¤f¥O©M¥Î¤áµoªíªº¤å³¹¼Æ¥Ø(posts). §Ṳ́]³Ð«Ø¤F¥t¤@Óªí"acct_param_table", ¥¦¬OXlight FTPªA°È¾¹¤¤ªº¤@±i¼Æ¾Ú®wªí, ¥Î©ó¦sÀx¥Î¤á°Ñ¼Æ. §Ų́S¦³³Ð«ØXlight FTPªA°È¾¹ªº¥Dn¼Æ¾Ú®wªí"acct_table ", ¦]¬°§Ú̱N¨Ï¥Î¦sÀx¹Lµ{¼ÒÀÀ¨ä¥\¯à.
account_info
|
acct_param_table
|
.
¤U±¥N½X¬O½d¨ÒMySQL¦sÀx¹Lµ{test () ¡A¥¦±µ¨ü2ӰѼÆ, username_in©Mpassword_in.
DELIMITER $$ DROP PROCEDURE IF EXISTS test $$ CREATE PROCEDURE test(username_in VARCHAR(65), password_in VARCHAR(65)) main: BEGIN DECLARE user_name VARCHAR(65); DECLARE home_path VARCHAR(255); DECLARE home_perm VARCHAR(10); DECLARE num_posts, param_index INT(10); SELECT `account`, `Posts` INTO user_name, num_posts FROM account_info WHERE account = username_in AND password = password_in; IF user_name != username_in THEN LEAVE main; END IF; SET home_perm = 'LRS'; IF num_posts > 100 THEN SET param_index = 1; SET home_path = 'c:\\folder_1'; ELSEIF num_posts > 200 THEN SET param_index = 2; SET home_path = 'c:\\folder_2'; ELSE SET param_index = 0; SET home_path = 'c:\\folder_0'; END IF; SELECT home_path,home_perm,param_index; END $$ DELIMITER ;
¦sÀx¹Lµ{test()±µ¨ü©ú½X¤å¥»¤f¥Oªºpassword_in°Ñ¼Æ. §A¥²¶·¬°µêÀÀªA°È¾¹°t¸mODBC¨Ï¥Î©ú½X¤å¥»¤f¥O, ¦p¤U¹Ï©Ò¥Ü
¤W±ªº¦sÀx¹Lµ{test()±NÀˬd¼Æ¾Ú®waccount_infoÅçÃҥΤá, ¦pªG¥Î¤á¦W©Î¤f¥O¤£²Å¦X, ±N¨S¦³µ²ªG¶°ªð¦^Xlight FTPªA°È¾¹¡A³oӥΤ᪺ÅçÃÒ±N¥¢±Ñ.
¦b¦¨¥\ªº¥Î¤á»{ÃÒ¥H«á, ³oÓµ{§Ç±N®Ú¾Ú¥Î¤á¦b"account_info"ªíùصoªíªº¤å³¹¼Æ¥Ø(posts), ªð¦^¤£¦Pªºparam_index, home_pathÈ. ³Ì²×test()µ{§Ç±N¥Î»y¥y"SELECT home_path,home_perm,param_index;"ªð¦^µ²ªG¶°¨ìXlight FTPªA°È¾¹.
¦]¬°test()µ{§Ç´À´«"acct_table"ªº¥\¯à, ±zÀ³¸Ó©ñ¸m"call test('$USER','$PASS');"¦b¿ï¶µ"´À´«²Ä¤@±ø¤º³¡SQL¬d¸ß»y¥y"¤¤,¦p¤U¹Ï©Ò¥Ü.
$USER©M$PASS¬O¹w©w¸q°Ñ¼Æ, Xlight FTPªA°È´Á±N¥Îµn¿ý¥Î¤á¹ê»Úªº¥Î¤á¦W©M±K½X¦Û°Ê´À´«¥¦Ì. ¦pªG»Ýn¬d¸ß¤ä«ùªº¹w©w¸q°Ñ¼Æ, ½Ð¬d¾\À°§U¤â¥Uªº[¥þ§½¿ï¶µ]->[°ª¯Å]³o¤@¸`.
¦pªG±z·Qn¸Ñ¨M¼Æ¾Ú®w¬d¸ßªº°ÝÃD¡A§A¥i¥H¿ï¾Ü³oÓ¿ï¶µ"¦b¿ù»~¤é»xÅã¥Ü¸òÂܽոիH®§"¡A§A±N¯à¦b¿ù»~¤é»x¤¤¬Ý¨ìSQL¬d¸ß¿ù»~.