¼ÓÈëÊÕ²Ø | ÉèΪÊ×Ò³ | »áÔ±ÖÐÐÄ | ÎÒҪͶ¸å | RSS
Äúµ±Ç°µÄλÖãºÊ×Ò³ > ÔĶÁÖÐÐÄ > Èí¼þѧϰ

̸̸JDBC

ʱ¼ä£º2014-05-04 09:49:15  À´Ô´£ºJSPÌì¿ÕÍø  ×÷ÕߣºÎ´Öª
JDBC½éÉÜ ¡ïÄ¿±êÓëÕÜѧ ¡ï½Ó¿Ú¸Åò ¡ïʹÓó¡ºÏ ¡ï°²È«ÐÔ¿¼ÂÇ

1. ½éÉÜ¡¡¡¡Ðí¶à¿ª·¢ÕߺÍÓû§¶¼ÔÚѰÕÒJava³ÌÐòÖзÃÎÊÊý¾Ý¿âµÄ±ã½Ý·½·¨¡£ÓÉÓÚJavaÊÇÒ»¸ö½¡×³£¬°²È«£¬Ò×ÓÚʹÓõģ¬Ò×ÓÚÀí½âÇÒ¿ÉÒÔ´ÓÍøÂçÖÐ×Ô¶¯download £¬ËùÒÔËü³ÉΪ¿ª·¢Êý¾Ý¿âÓ¦ÓõÄÒ»ÖÖÁ¼ºÃµÄÓïÑÔ»ù´¡¡£ËüÌṩÁËC,C++,Smalltalk, BASIC, COBOL, and 4GLsµÄÐí¶àÓŵ㡣Ðí¶à¹«Ë¾ÒѾ­¿ªÊ¼ÔÚJavaÓëDBMSµÄÁ¬½Ó·½Ãæ×ö¹¤×÷¡£
¡¡¡¡Ðí¶àJavaÓ¦Óÿª·¢Õß¶¼Ï£ÍûÄܹ»±àд¶ÀÁ¢ÓÚÌØ¶¨DBMSµÄ³ÌÐò£¬¶øÎÒÃÇÒ²ÏàÐÅÒ»¸ö¶ÀÁ¢ÓÚDBMSµÄ½Ó¿Ú½«Ê¹µÃÓë¸÷ÖÖ¸÷ÑùDBMSÁ¬½Ó±äµÃ×îΪ±ã½Ý£¬¿ª·¢¸ü¼ÓѸËÙ¡£ËùÒÔÎÒÃÇÈÏΪ¶¨ÒåÒ»¸öͨÓõÄSQLÊý¾Ý¿â´æÈ¡¿ò¼Ü£¬ÔÚ¸÷ÖÖ¸÷ÑùµÄÌṩÊý¾Ý¿âÁ¬½ÓÄ£¿éÉÏÌṩͳһµÄ½çÃæÊÇÊ®·ÖÓÐÒâÒåµÄ¡£Õâʹ³ÌÐòÔ±¿ÉÒÔÃæ¶Ôµ¥Ò»µÄÊý¾Ý¿â½çÃæ£¬Ê¹Êý¾Ý¿âÎ޹صÄJava¹¤¾ßºÍ²úÆ·³ÉΪ¿ÉÄÜ£¬Ê¹µÃÊý¾Ý¿âÁ¬½ÓµÄ¿ª·¢Õß¿ÉÒÔÌṩ¸÷ÖÖ¸÷ÑùµÄÁ¬½Ó·½°¸¡£ÎÒÃÇ¿´µ½ÎÒÃǶ¨ÒåÒ»¸öͨÓõͲãµÄ£¬Ö§³Ö»ù±¾SQL¹¦ÄܵÄJava DataBase Connectivity (JDBC)APIµÄ½ôÆÈÈÎÎñ¡£
¡¡¡¡ÐÒÔ˵ÄÊÇÎÒÃDz»±Ø´ÓÍ·Éè¼ÆÒ»¸öSQL API¡£ÎÒÃÇ¿ÉÒÔ°ÑÎÒÃǵŤ×÷½¨Á¢ÔÚ X/Open SQL CLI (µ÷Óòã½Ó¿Ú)Ö®ÉÏ(ËüÒ²ÊÇMicrosoft´s ODBC µÄ»ù´¡)¡£
¡¡¡¡ÎÒÃÇÖ÷ÒªÈÎÎñÊǶ¨ÒåÒ»¸ö×ÔÈ»µÄJava½Ó¿ÚÀ´ÓëX/Open CLIÖж¨ÒåµÄ»ù±¾µÄ³éÏó²ãºÍ¸ÅÄîÁ¬½Ó¡£
¡¡¡¡JDBC APIµÃµ½Êý¾Ý¿â¿ª·¢³§ÉÌ£¬Á¬½Ó¿ª·¢³§ÉÌ£¬ISV,ÒÔ¼°Ó¦Óÿª·¢ÕßµÄÖ§³ÖÊÇÊ®·ÖÖØÒªµÄ¡£ÎÒÃÇÏàÐŰÑÎÒÃǵŤ×÷½¨Á¢ÔÚODBC³éÏó²ãµÄ»ù´¡ÉϽ«JDBC¸ü¼ÓÈÝÒ׵õ½´ó¼ÒµÄ½ÓÊÜ¡£¶øÇÒ´Ó¼¼ÊõÉÏÀ´Ëµ£¬ODBCÊÇÎÒÃÇÉè¼Æ¹¤×÷µÄÒ»¸öÁ¼ºÃ»ù´¡¡£
¡¡¡¡ÒòΪODBCÊÇÒ»¸öCÓïÑÔ½Ó¿Ú£¬ËùÒÔODBCÔÚJavaÖÐÖ±½ÓʹÓò»Êʵ±¡£´ÓJavaÖÐÀ´µ÷ÓÃC´úÂëÔÚ°²È«ÐÔ£¬½¡×³ÐÔ£¬ÊµÏֵķ½±ã£¬¿ÉÒÆÖ²ÐԵȵȷ½ÃæÓÐÐí¶à²»±ã¡£ËüʹµÃJavaÔÚÕâЩ·½ÃæµÄÐí¶àÓŵãµÃ²»µ½·¢»Ó¡£
¡¡¡¡ÎÒÃÇÒѾ­ÔÚ¶ÌÆÚÀïÃæÊµÏÖÁËÒ»¸ö½¨Á¢ÔÚODBCÉϵÄAPI¡£³¤Ô¶À´¿´£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÆäËû·½Ê½ÌṩʵÏÖ¡£

1. 1. ×¢Òâ
¡¡¡¡ÎÒÃǷdz£¸ÐлÔÚÊý¾Ý¿â£¬Êý¾Ý¿âÁ¬½ÓºÍÊý¾Ý¿â¹¤¾ßÁìÓòµÄÐí¶àÔçÆÚµÄ¹¤×÷Õß¡£ËûÃÇΪJDBCµÄÔçÆÚ²Ý°¸ÌṩÁ˺ܺõÄÒâ¼ûºÍ½¨Òé¡£ËûÃǵŤ×÷¶Ô±¾¹æ·¶ÆðÁ˲»¿É¹ÀÁ¿µÄ×÷Óá£


2. Ä¿±êÓëÕÜѧÕâ¸ö²¿·ÖÃèÊöÁËÖ¸ÒýÕâ¸öAPI¿ª·¢µÄÄ¿±êÒÔ¼°ÕÜѧ¡£
2. 1. SQL ¼¶ API
¡¡¡¡ÎÒÃǵÄÖ÷ҪĿ±êÊÇΪJava¶¨ÒåÒ»¸ö¡°µ÷Óü¶¡±(call-level)µÄSQL½Ó¿Ú¡£×ÅÒâζ×ÅÎÒÃÇÖ÷ÒªµÄ×¢ÒâÁ¦¼¯ÖÐÔÚÖ´ÐÐÔ­Ô­±¾±¾µÄSQLÓï¾ä²¢ÇÒÈ¡»Ø½á¹û¡£ÎÒÃÇÔ¤¼Æ¸ß²ãµÄAPIÒ²½«±»¶¨Ò壬ÕâЩ¿ÉÄܽ«½¨Á¢ÔÚ»ù²ãµÄ½Ó¿ÚÉÏ¡£
¡¡¡¡ÕâЩ¸ß²ã½Ó¿Ú°üÀ¨ÏóÖ±½ÓµØ¡¢Í¸Ã÷µØ°Ñ±íÀïÃæµÄÊý¾ÝÓ°Éäµ½JavaÀàÀïÃæ£¬ÓÃÓï·¨Ê÷±íʾ¸ü¼ÓͨÓõIJéѯ£¬ÒÔ¼°JavaÄÚǶµÄSQLÓï·¨¡£
ÎÒÃÇÏ£Íû´óÁ¿µÄÓ¦Óÿª·¢¹¤¾ß½«Ê¹ÓÃÎÒÃǵÄAPI¡£È»¶øÎÒÃÇҲϣÍû³ÌÐòÔ±Äܹ»Ê¹ÓÃÎÒÃǵÄAPI£¬ÓÈÆäÊÇĿǰÕâÑùÔÚJavaÀïûÓÐÈÎºÎÆäËûÊÖ¶Î(Ó¦¸ÃÊÇ˵Êý¾Ý¿â·ÃÎÊÊÖ¶Î)µÄÇé¿öÏ¡£
2. 2. ×ñÑ­SQL
¡¡¡¡Êý¾Ý¿âϵͳ֧³Ö¸÷ʽ¸÷ÑùµÄSQLÓï·¨ºÍÓïÒ壬ËüÃÇÏ໥֮¼äÔڱȽϸ߼¶µÄ¹¦ÄÜÀýÈçÍⲿÁ¬½Ó£¬ÄÚǶ¹ý³ÌµÈ·½Ãæ²¢²»Ò»Ö£¬¾¡¹ÜÎÒÃÇÄܹ»ÅÎÍû×ÅËæÊ±¼äµÄÍÆÒÆÕâЩ²¿·ÖµÄSQL¿ÉÒÔ»ñµÃ±ê×¼»¯¡£Í¬Ê±ÎÒÃDzÉÈ¡ÕâÑùµÄ̬¶ÈÓëÁ¢³¡£º
In fact, an application query need not even be SQL, or it may be a specialized derivative of SQL, e.g. for document or image queries, designed for specific DBMSs.
In order to pass JDBC compliance tests and to be called "JDBC COMPLIANT " we require that a driver support at least ANSI SQL-2 Entry Level. This gives applications that want wide portability a guaranteed least common denominator. We believe ANSI SQL-2 Entry Level is reasonably powerful and is reasonably widely supported today.
* JDBCÔÊÐí²éѯ±í´ïʽֱ½Ó´«µÝµ½µ×²ãµÄÊý¾ÝÇý¶¯£¬ÕâÑùÒ»¸ö³ÌÐò¿ÉÒÔ»ñµÃ¾¡Á¿¶àµÄSQL¹¦ÄÜ£¬µ«ÊÇ¿ÉÄܱ»DBMS¾Ü¾ø¡£ÊÂʵÉÏ£¬Ò»¸ö³ÌÐòµÄ²éѯÉõÖÁ¿ÉÒÔ²»ÊÇSQLµÄ£¬»òÕßÊÇSQLµÄÒ»¸öÌØÊâÑÝ»¯£¬ÀýÈ磺ΪרÃÅÊý¾Ý¿âÉè¼ÆµÄÎı¾»òÕßͼÐβéѯ¡£
* ΪÁËͨ¹ýJDBC¼æÈݵIJâÊÔ£¬²¢ÇÒÄܹ»±»³ÆÎªJDBC¼æÈÝ£¬ÎÒÃÇÒªÇóÒ»¸öÇý¶¯ÖÁÉÙÖ§³ÖANSI SQL-2µÄ±ê×¼¡£ÕâʹµÃÄÇЩÐèÒª¹ã·ºÒÆÖ²ÐԵijÌÐò»ñµÃÒ»¸ö×îСµÄ·Öĸ(Õâ¾ä»°µÄÔ­ÎÄÊÇ£ºThis gives applications that want wide portability a guaranteed least common denominator.)¡£ÎÒÃÇÏàÐÅANSI SQL-2ÊÇ×㹻ǿ´óµÄ£¬²¢ÇÒÊǵõ½×ã¹»Ö§³ÖµÄ¡£
2. 3. JDBC±ØÐë¿ÉÒÔ½¨Á¢ÔÚÏÖÓеÄÊý¾Ý¿â½Ó¿ÚÉÏ
¡¡¡¡ÎÒÃDZØÐëÄܹ»±£Ö¤ JDBC SQL API Äܹ»½¨Á¢ÔÚÆÕͨµÄSQL APIÉÏ£¬ÓÈÆäÊÇODBC¡£ÕâЩҪÇóÒѾ­¶ÔÕâ¸ö¹æ·¶µÄһЩ²¿·Ö²úÉúÁËÓ°Ï죬ÓÈÆäÊǶԴ«³ö²ÎÊý(OUT parameter)ºÍ´óÊý¾Ý¿éµÄ´¦Àí¡£
2. 4. ±ØÐë±£Ö¤Õâ¸ö½Ó¿ÚÓëJAVAϵͳµÄÆäËû²¿·Ö±£³ÖÒ»ÖÂĿǰ¶ÔJAVAµÄ»ý¼«»ØÓ¦ÒѾ­Ê®·ÖÈÈÁÒ¡£ºÜ´ó³Ì¶ÈÉÏÊÇÓÉÓÚÕâ¸öÓïÑÔ±ê×¼ÒÔ¼°±ê×¼ÔËÐÐʱ¿â±»ÈÏΪÊÇÒ»Ö£¬¼òµ¥ºÍÇ¿´óµÄ¡£ÎÒÃǽ«¾¡ÎÒÃÇËùÄÜ£¬ÌṩÕâ¸öJavaÊý¾Ý¿â½Ó¿Ú£¬Õâ¸ö½Ó¿Ú½«½¨Á¢ÔÚJavaÄÚºËÏÖÓеÄÕâÖÖ·ç¸ñ£¬²¢ÇÒ½«½øÒ»²½¼ÓÇ¿Ëü¡£
2. 5. ±£³Ö¼òµ¥
We would prefer to keep this base API as simple as possible, at least initially. In general we would prefer to provide a single mechanism for performing a particular task, and avoid provid-ing duplicate mechanisms. We will extend the API later if any important functionality is miss-ing.
¡¡¡¡ÎÒÃǽ«Á¦ÕùʹµÃ»ù±¾µÄAPI¾¡Á¿¼òµ¥£¬ÖÁÉÙ¿ªÊ¼µÄʱºòÊÇÕâÑùµÄ¡£Ò»°ãÀ´Ëµ£¬ÎÒÃÇÏ£Íû¶ÔʵÏÖÿ¸öÌØ¶¨µÄÈÎÎñÖ»ÌṩһÖÖ·½°¸£¬¶ø±ÜÃâÌṩ¶àÖÖ·½°¸¡£Èç¹ûÒ»Ð©ÖØÒªµÄ¹¦ÄÜÒÅ©ÁË£¬ÄÇôÎÒÃÇÔÚÍíЩʱºò½«À©³äÕâ¸öAPI¡£
2. 6. ¾¡Á¿±£³ÖÇ¿µÄ¡¢¾²Ì¬µÄÀàÐÍ
¡¡¡¡ÎÒÃÇÏ£ÍûÕâ¸öJDBC API±£³Ö¾¡Á¿Ç¿µÄÀàÐͼì²é£¬Ê¹µÃ¾¡¿ÉÄܶàµÄÀàÐÍÐÅÏ¢¿ÉÒÔ¾²Ì¬µØ±í´ï¡£×ÅʹµÃ¾¡¿ÉÄܶàµÄ´íÎó¿ÉÒÔÔÚ±àÒëµÄʱºò±»·¢ÏÖ¡£
¡¡¡¡ÓÉÓÚSQL±¾ÉíÊǶ¯Ì¬ÀàÐ͵ģ¬ËùÒÔÎÒÃÇ¿ÉÄÜ»áÔÚ³ÌÐòÔËÐеÄʱºòÓöµ½ÀàÐͲ»ÄÜÆ¥ÅäµÄÎÊÌâ¡£ÀýÈ磺µ±Ò»¸ö³ÌÐòÔ±ÔÚÏ£ÍûSELECT·µ»ØÒ»¸öÕûÊý£¬µ«ÊÇʵ¼Ê·µ»ØµÄÊÇÒ»¸ö×Ö·û´®¡°foo¡±. µ«ÊÇÎÒÃÇÒÀȻϣÍû³ÌÐòÔ±°ÑËûÃÇËùÏ£ÍûµÄÀàÐÍÔÚ±àÒëµÄʱºò¾ÍÄܹ»±í´ïÇå³þ£¬ÕâÑùÎÒÃÇ¿ÉÒÔ×ö¾¡¿ÉÄܶàµÄ¾²Ì¬¼ì²é¡£ÎÒÃÇҲϣÍûÔÚ±ØÒªµÄʱºòÄܹ»Ö§³Ö¶¯Ì¬ÀàÐͽӿڣ¨¼ûµÚËÄÕ£©
2. 7. ʹÆÕͨÈÎÎñ¼ò»¯
¡¡¡¡ÎÒÃÇÏ£ÍûÆÕͨµÄÈÎÎñÄܹ»ÊǼòµ¥µÄ£¬¶ø²»Ò»°ãµÄ¹¤×÷ÊÇ¿ÉÐеġ£
Ò»¸öÆÕͨÈÎÎñÊÇÖ¸Ò»¸ö³ÌÐòÔ±Ö´ÐÐÒ»¸ö¼òµ¥µÄûÓвÎÊýµÄSQLÓï¾ä£¨ÀýÈç:SELECT,INSERT,UPDATE,DELETE£©£¬È»ºó(ÀýÈçSELECT)´¦Àí·µ»ØµÄ¾ßÓмòµ¥ÀàÐ͵ÄÔª×é¡£Ò»¸ö¾ßÓд«Èë²ÎÊý£¨IN parameter£©µÄSQLÓï¾äÒ²ÊÇÆÕͨµÄ¡£
¡¡¡¡²»ÄÇôÆÕͨµ«ÊÇÒ²ÊÇÊ®·ÖÖØÒªµÄÇéÐÎÊǵ±³ÌÐòԱʹÓÃÓÐINOUT,OUT²ÎÊýµÄSQLÓï¾ä¡£ÎÒÃÇÒ²ÐèÒªÖ§³Ö¶Áд¼¸Õ××Ö½Ú¶ÔÏóµÄSQLÓï¾ä£¬¸üÌØ±ðһЩµÄÇéÐΰüÀ¨Ò»¸öÓï¾ä·µ»ØÁ˶à¸ö½á¹û¼¯ºÏ¡£
¡¡¡¡ÎÒÃÇÏ£ÍûÔªÊý¾Ý(Meatdata)µÄʹÓúÜÉٵģ¬Ö»ÊÇÄÇЩÊìÁ·µÄ³ÌÐòÔ±ÒÔ¼°¿ª·¢¹¤¾ß²ÅÐèÒª´¦ÀíµÄÎÊÌâ¡£ÔªÊý¾Ý´æÈ¡º¯ÊýÒÔ¼°¶¯Ì¬ÀàÐÍÊý¾Ý´æÈ¡º¯ÊýÔÚÕâ¸öÎĵµÄ©Î²£¬Ò»°ãµÄ³ÌÐòÔ±¿ÉÒÔ²»±Ø¹ØÐÄÕâЩÕ½ڡ£
2. 8. ²»Í¬µÄ¹¦ÄÜÈò»Í¬µÄ·½·¨£¨º¯Êý£©À´ÊµÏÖ
£¨¡°·½·¨¡±µÄÔ­ÎÄÊÇ£ºmethod£¬ÕâÑù·­ÒëÊǸúVBµÄ£©
¡¡¡¡Ò»ÖÖ½çÃæÉè¼Æ·ç¸ñÊÇʹÓúÜÉٵĹý³Ì£¬ÌṩÐí¶à×÷Ϊ²ÎÊý´«µÝµÄ¿ØÖƱêÖ¾£¬ÕâÑùËüÃÇ¿ÉÒÔÓÃÀ´Ó°ÏìºÜ´óÒ»¸ö·¶Î§Äڵĸ÷ÖÖÐÐΪ¡£À´±í´ï²»Í¬µÄ¹¦ÄÜ¡£ÕâÇ÷ÏòÓëʹÓúܶàµÄ·½·¨£¬µ«ÊÇÿ¸ö·½·¨¶¼±È½ÏͬÒâÀí½â¡£
¡¡¡¡Ò»°ãÀ´Ëµ£¬JavaÄÚºËÀàʹÓò»Í¬µÄ·½·¨£¨method£©¡£Õâ¸ö²½ÖèµÄÖ÷ÒªÓŵãÊÇ¿ªÊ¼Ñ§Ï°»ù±¾½çÃæµÄ³ÌÐòÔ±¿ÉÒÔ²»±Ø±»ÄÇЩÓ븴ÔÓ¹¦ÄÜÏà¹ØµÄ²ÎÊýËùÀ§ÈÅ¡£ÎÒÃÇÁ¦Í¼ÔÚJDBC½Ó¿ÚÉÏÒ²²ÉÓÃÏàͬµÄ²ßÂÔ¡£Ò»°ãÀ´Ëµ²ÉÓò»Í¬µÄ·½·¨¶ø²»ÊDzÉÓò»Í¬µÄ±êÖ¾ºÍ¶àÓÃ;µÄ·½·¨¡£


3. ½Ó¿Ú¸Åò¡¡¡¡½Ó¿Ú·ÖΪÁ½¸ö²ã´Î£¬Ò»¸öÊÇÃæÏò³ÌÐò¿ª·¢ÈËÔ±µÄJDBC API¡£ÁíÍâÒ»¸öÊǵײãµÄJDBC Driver API¡£
3. 1. JDBC API
¡¡¡¡JDBC API ±»ÃèÊö³ÉΪÒÍ×å³éÏóµÄJava½Ó¿Ú£¬ËƵÄÓ¦ÓóÌÐòÔ¶¿ÉÒÔ¶Ôij¸öÊý¾Ý¿â´ò¿ªÁ¬½Ó£¬Ö´ÐÐSQLÓï¾ä²¢ÇÒ´¦Àí½á¹û¡£

×îÖØÒªµÄ½Ó¿ÚÊÇ£º
* java.sql.DriverManager ´¦ÀíÇý¶¯µÄµ÷Èë²¢ÇÒ¶Ô²úÉúеÄÊý¾Ý¿âÁ¬½ÓÌṩ֧³Ö¡£
* java.sql.Connection ´ú±í¶ÔÌØ¶¨Êý¾Ý¿âµÄÁ¬½Ó¡£
* java.sql.Statement ¡¡´ú±íÒ»¸öÌØ¶¨µÄÈÝÆ÷£¬À´¶ÔÒ»¸öÌØ¶¨µÄÊý¾Ý¿âÖ´ÐÐSQLÓï¾ä¡£
* java.sql.ResultSet ¡¡¿ØÖƶÔÒ»¸öÌØ¶¨Óï¾äµÄÐÐÊý¾ÝµÄ´æÈ¡¡£
ÆäÖÐjava.sql.StatementÓÖÓÐÁ½¸ö×ÓÀàÐÍ£º
1. java.sql.PreparedStatement ¡¡ÓÃÓÚÖ´ÐÐÔ¤±àÒëµÄSQLÓï¾ä¡£
2. java.sql.CallableStatement ¡¡ÓÃÓÚÖ´ÐжÔÒ»¸öÊý¾Ý¿âÄÚǶ¹ý³ÌµÄµ÷Óá£
¡¡¡¡ÏÂÃæµÄÕ½ڶÔJDBCÊÇÈçºÎÔËÐеÄÌṩÁ˸ü¶àÃèÊö£¬Õû¸ö¶¨Òå¼ûµÚ13Õ¡£ÁíÍâµÚ15ÕÂÃèÊöÁËϵͳÈç¹û»ñÈ¡Êý¾Ý¿âµÄÔªÊý¾ÝÐÅÏ¢¡£
3. 2. JDBC Driver API
¡¡¡¡java.sql.DriverÔÚµÚ9ÕÂÓÐÍêÕûµÄ¶¨ÒåÁË.´ó²¿·ÖJDBCÇý¶¯Ö»ÐèÒªÍê³ÉÕâЩJDBC APIËù¶¨ÒåµÄ³éÏóÀà¾Í¿ÉÒÔÁË¡£ÌØ±ðµØ£¬ËùÓеÄdriver±ØÐëÌṩ¶Ôjava.sql.Connection, java.sql. State-ment, java.sql.Prepared£­Statement, and java.sql.ResultSetµÄʵÏÖ¡£Èç¹ûÄ¿±êDBMSÌṩÓÐOUT²ÎÊýµÄÄÚǶ¹ý³Ì£¬ÄÇô»¹±ØÐëÌṩjava.sql.CallableStatement ½Ó¿Ú¡£Ã¿¸ödatabase driver±ØÐëÌṩһ¸öÀࣺjava.sql.DriverÒÔʹµÃϵͳ¿ÉÒÔÓÉ java.sql.DriverManagerÀ´¹ÜÀí¡£
¡¡¡¡Ò»¸öÏÔÈ»µÄdriverÊÇÔÚODBCÖ®ÉÏÌṩ¶ÔJDBCµÄʵÏÖ£¬´Ó¶øÌṩÓëODBC½Ó¿ÚµÄJDBC-ODBC ÇÅ£¬¾ÍÏóÇ°ÃæµÄͼËùÏÔʾµÄ.ÓÉÓÚJDBC·ÅÔÚODBCÖ®ºó£¬ËùÒÔʵÏÖÆðÀ´¼òµ¥¶øÇÒ¸ßЧ¡£
ÁíÍâÒ»¸öÓÐÓõÄÇý¶¯Ö±½Ó½Ó´¥Êý¾Ý¿âÎ޹صÄÍøÂçЭÒé¡£·¢²¼Ò»¸öЭÒéÔÊÐí¶à¸ö·þÎñÆ÷ʵÏֵķ½·¨£¬ÀýÈçÔÚODBC»òÕßÌØ¶¨µÄDBMSÉÏ£¨¾¡¹ÜÒѾ­ÓÐÁËһЩʹÓù̶¨Ð­ÒéµÄ²úÆ·£¬µ«ÊÇÎÒÃDz»´òËã¶ÔËüÃÇʵÏÖ±ê×¼»¯¡££©£¬ÊÇ¿ÉÈ¡µÄ¡£


4. JDBCʹÓó¡ºÏ¡¡¡¡Before looking at specifics of the JDBC API, an understanding of typical use scenarios is help-ful. There are two common scenarios that must be treated differently for our purposes: applets and applications.
¡¡¡¡ÔÚ¿´JDBC API֮ǰÁ˽âһϵäÐ͵ÄʹÓó¡ºÏÊÇÓаïÖúµÄ¡£Í¨³£ÓÐÁ½ÖÖÇéÐαØÐë·Ö±ð¶Ô´ý£ºappletºÍapplication.
4. 1. Applet
¡¡¡¡Ä¿Ç°JavaʹÓõÄ×î¶àµÄ´ÓÍøÂçÖÐÏÂÔØµÄapplet£¬ËüÃÇ×÷ΪwebÎļþµÄÒ»¸ö²¿·Ö¡£µ±ÖÐÓÐÊý¾Ý¿â´æÈ¡appletºÍÄܹ»Ê¹ÓÃJDBCÀ´½Ó´¥Êý¾Ý¿âµÄapplet¡£
ÀýÈ磬һ¸öÓû§¿ÉÄÜÏÂÔØÒ»¸öÏÔʾ¹ÉƱÀúÊ·¼Û¸ñͼµÄapplet¡£Õâ¸öappletͨ¹ýinternetÀ´´Ó¹ØÏµÊý¾Ý¿âÖлñµÃ¹ÉƱÀúÊ·¼Û¸ñ¡£
×îÒ»°ãµÄÇé¿öÀïÃæ£¬¶ÔappletµÄʹÓÃÊÇͨ¹ý²»¿É¿¿µÄ±ß½çµÄ¡£ÀýÈç´ÓÁíÍâÒ»¸ö¹«Ë¾»òÕßInternetÉÏ»ñµÃÕâЩapplet¡£ÓÚÊdzÆÕâ¸öÇé¿öΪ"Internet"³¡ºÏ¡£È»¶øappletÒ²¿ÉÄÜͨ¹ý¾ÖÓòÍøÏÂÔØ¡£ÔÚÕâ¸öÇé¿öÀïÃæ£¬¿Í»§»úµÄ°²È«¶¼»¹ÊÇÒ»¸öÎÊÌâ¡£
µäÐ͵ÄappletÔÚ¼¸¸ö·½ÃæÓ봫ͳµÄÊý¾Ý¿âÓ¦ÓóÌÐòÓÐËù²»Í¬£º
1). ²»¿É¿¿µÄapplet±»ÑϸñµØÏÞÖÆÔÚËûÃDZ»ÔÊÐíÖ´ÐеĵIJÙ×÷ÉÏ¡£ÌØ±ðµØ£¬²»ÔÊÐíËûÃÇ´æÈ¡±¾µØµÄÎļþ£¬Çв»ÔÊÐíËûÃǶÔÈÎÒâµÄÊý¾Ý¿â½¨Á¢ÍøÂçÁ¬½Ó¡£
2). ¾Í±êʶºÍÁ¬½ÓÍøÉÏÊý¾Ý¿âÀ´Ëµ£¬Internet»·¾³ÀïÃæµÄappletÃæÁÙеÄÎÊÌâ¡£
3). µ±Êý¾Ý¿â¿ÉÄÜÓëÄãÏà¸ôÍòÀïµÄʱºò£¬Ð§ÂʵĿ¼ÂÇÒ²ÓÐËù²»Í¬ÁË¡£Óë¾ÖÓòÍøÏà±È£¬InternetÉÏÊý¾Ý¿âapplet¿ÉÄÜ»áÅöµ½Ê®·Ö²»Í¬µÄ·´Ó¦Ê±¼ä¡£
4. 2. Application
¡¡¡¡JavaÒ²¿ÉÒÔÓÃÀ´½¨Á¢ÆÕͨµÄÓ¦Ó㬴ӶøÏëÒ»°ãµÄÓ¦ÓÃÒ»ÑùÔÚ¿Í»§»úÉÏʹÓá£ÎÒÃÇÏàÐÅËæ×Å¿ª·¢¹¤¾ßÔ½À´Ô½¶à£¬ÈËÃÇ¿ªÊ¼ÈÏʶµ½Ìá¸ß³ÌÐòÉú²úЧÂʵıØÒªÐÔ£¬ÒÔ¼°JavaµÄÆäËûÓŵ㣬JavaµÄÕâÖÖÓ÷¨½«Ô½À´Ô½Á÷ÐС£ÔÚÕâÖÖ·½Ê½ÀïÃæ£¬JavaµÄ´úÂëÊÇ¿ÉÒÔÐÅÀµµÄ£¬ÇÒ±»ÔÊÐí¶ÁдÎļþ´ò¿ªÍøÂçÁ¬½ÓµÈµÈ£¬¾ÍÏëÆäËûµÄÓ¦ÓóÌÐò´úÂëÒ»Ñù¡£

¡¡¡¡Ò²ÐíÕâЩJavaÓ¦ÓÃʹÓõÄ×î¶àµÄÊÇÔÚÒ»¸ö¹«Ë¾ÄÚ²¿»òÕßÔÚIntranetÉÏ£¬ËùÒÔ²»·Á³ÉΪIntranet³¡ºÏ¡£ÀýÈçÒ»¸ö¹«Ë¾Ï£ÍûÀûÓÃJava¼°ÆäGUI¹¹¼þ¹¤¾ßÀ´½¨Á¢ËûµÄ»ùÓÚºÏ×÷Êý¾ÝģʽµÄºÏ×÷Èí¼þ¡£ÕâЩӦÓóÌÐò½«´æÈ¡¾ÖÓòÍø»òÕß¹ãÓòÍøµÄÊý¾Ý¡£JavaÓ¦ÓÿÉÒÔ×÷µ½ÕâЩ¡£
JavaÓ¦ÓóÌÐò³¡ºÏºÍIntranet³¡ºÏÓëapplet³¡ºÏÓÐÖî¶à²»Í¬¡£ÀýÈç±ê¶¨Ò»¸öÊý¾Ý¿â×î×ÔÈ»µÄ·½Ê½ÊÇÓÃÒ»¸öÊý¾Ý¿âµÄÃû×Ö£¬¾ÍÏó"Customers" ºÍ"Personnel"ÕâÑù¡£È»ºóÓû§Ï£ÍûϵͳÄܹ»¶¨Î»¾ßÌåµÄ»úÆ÷£¬DBMS£¬JDBC driver£¬ºÍJavaÓ¦ÓóÌÐò¡£
4. 3. ÆäËû³¡ºÏ
¡¡¡¡»¹ÓÐÆäËûһЩÓÐȤµÄ³¡ºÏ£º
1). ÒÑÑéÖ¤µÄapplet£¨Trusted applets£©ÊÇÖ¸ÄÇЩÒѾ­±»JavaÐéÄâ»úÆ÷È϶¨ÊÇ¿ÉÒÔÐÅÀµµÄapplet¡£ËûÃÇÖ®ËùÒÔ±»ÈÏΪÊÇ¿ÉÐŵÄÊÇÒòΪËûÃÇÒѾ­¶ÔÉÏÁËÌØ¶¨µÄÃܳף¬»òÕßÓû§ÈÏΪ´ÓÌØ¶¨À´Ô´À´µÄappletÊÇ¿ÉÐŵġ£ÔÚ°²È«µÄ·½ÃæÉÏËûÃÇÓëÓ¦Óã¨appliction£©Ïàͬ£¬µ«ÊÇÆäËû·½Ã棨ÀýÈ綨λһ¸öÊý¾Ý¿â£©ÓëÔòÓëappletÏàËÆ¡£
2). ÓëÖ±½Ó´ÓJava GUI³ö·¢Óÿͻ§/·þÎñÆ÷ģʽÀ´¶ÈÇúDBMS·þÎñÆ÷²»Í¬£¬Èý²ã´æÈ¡·½Ê½¿ÉÄܱ»Ê¹Óá£ÔÚÕâ¸ö³¡ºÏÀïÃæ£¬JavaÓ¦ÓóÌÐò¶ÔÖмä²ãµÄ·þÎñ·¢³öµ÷Óã¬Öмä²ãµÄ·þÎñÔÚÍøÉÏ£¬ËüÓÖÔÙÈ¥µ÷ÓÃÊý¾Ý¿â¡£ÕâЩµ÷ÓÿÉÄÜͨ¹ýRPC (remote procedure call)»òÕßORB (object request broker )¡£ÔÚÕâÁ½ÖÖ³¡ºÏÀïÃæ£¬Öмä²ã×îºÃʹÓÃÒ»¸ö¶ÔÏó±ä»¯¡£ÎÒÃÇÏ£ÍûÈý²ã½á¹¹»á±äµÃÔ½À´Ô½ÆÕ±é£¬ÒòΪ¶ÔÓÚMIS¹ÜÀíÕßÀ´Ëµ£¬Õâ¿ÉÒÔʹµÃËûÃÇÓлú»áÔÚ¹«¹²Êý¾Ý¿âÉÏÏÔʽµØ¶¨ÒåºÏ·¨²Ù×÷µÈ¡£Í¬Ê±Èý²ã½á¹¹¿ÉÒÔÌṩÐí¶àЧÂÊÉϵĺô¦¡£

ĿǰÖмä²ãÒ»°ãÓÃC»òÕßC++ÕâÑùµÄÓïÑÔÀ´Íê³É¡£Í¨¹ýÓÅ»¯±àÒëÆ÷°Ñ°ÑJava ×Ö½Ú´úÂë·­Òë³ÉΪ¸ßЧµÄ»úÆ÷´úÂ룬Öмä²ãÒ²¿ÉÒÔÓÃJavaÀ´ÊµÏÖ¡£JavaÓÐÐí¶àÓÅÁ¼ÌØÐÔ£¨½¡×³ÐÔ£¬°²È«ÐÔ£¬¶àỊ̈߳©¿ÉÒÔ´ïµ½Öмä²ãÐèÒª´ïµ½µÄÄ¿µÄ¡£


5. °²È«ÐÔ¿¼ÂÇ¡¡¡¡×÷ÎªÍøÂçÉϵÄÓïÑÔJAVA±ØÐëÊ®·Ö×¢°²È«ÐԵĿ¼ÂÇ¡£»ùÓÚÉÏÃæµÄÌÖÂÛ£¬JDBCµÄÁ½ÖÖÖ÷ҪʹÓó¡ºÏÀïÃæ£¬ÎÒÃDZØÐ뿼Âǰ²È«ÐÔÎÊÌ⣺
* ÔÚJava applicationsµÄ³¡ºÏÀïÃæJava´úÂëÊDZ¾µØµÄ£¬ËùÒÔÒ²ÊÇ"trusted"
* ûÓÐÑéÖ¤µÄJava applet´úÂë²»¿ÉÒÔ´æÈ¡±¾µØµÄÒÔ¼°ÆäËûÍøÂçµÄÊý¾Ý¡£
5. 1. JDBC ºÍδÑéÖ¤µÄapplet
JDBCÊ×ÏȱØÐë·ûºÏJAVAµÄÒ»°ã°²È«¹æÔò¡£ÁíÍ⣺
* JDBC ±ØÐëÈÏΪûÓÐÑéÖ¤µÄappletsÊDz»¿É¿¿µÄ¡£
* JDBC ²»¿ÉÒÔÈò»¿É¿¿µÄapplets´æÈ¡±¾µØÊý¾Ý¿â¡£
* Ò»¸öÒѾ­ÏòJDBC DriverManager×¢²áµÄÊÇJDBC DriverÖ»ÄÜ´æÈ¡ËüËùÀ´µÄÊý¾ÝÔ´¡£
* Ò»¸öappletÒ²Ö»ÄÜÏòËüËùDownloadÀ´µÄ·þÎñÆ÷À´´æÈ¡Êý¾Ý¡£
Èç¹ûJDBCÇý¶¯²ãÈç¹ûÍêȫȷÐŶÔÒ»¸öÊý¾Ý¿â·þÎñÆ÷´ò¿ªÁ¬½Ó²»»áÒýÆðÈÏÖ¤»òÕßȨÏÞÎÊÌ⣨¿ÉÄÜÓÉÍøÉÏËæ»úÖ÷»úÉÏÔËÐеijÌÐòÒýÆð£©£¬ÄÇôËü¾ÍÔÊÐíapplet´ò¿ªÕâÑùµÄÁ¬½Ó¡£Êý¾Ý¿â·þÎñÆ÷²»Í¨¹ýIPµØÖ·À´ÏÞÖÆ´æÈ¡ÊÇÏ൱Éٵģ¬Ö÷ÒªÊÇΪÁ˾ÙÀý¡££¨µ±ÐÄ£¬ÕâÒ»¶Î»°ÎÒ¿ÉÄÜ·­Òë·´ÁË£¡£¡£¡´ó¼Ò¿´¿´Ô­ÎÄ¡££©
¡¡¡¡ÕâЩÏÞÖÆÊÇÏ൱·³ËöµÄ¡£²»¹ýËûÃÇÓë¶ÔÒ»°ãappletµÄÏÞÖÆÊÇÒ»ÖµÄÎÒÃÇûÓбØÒª·Å¿ªÕâЩÏÞÖÆ¡£
5. 2. JDBC ºÍJavaÓ¦ÓóÌÐò
¡¡¡¡¶ÔÓÚÒ»¸öÆÕͨµÄJavaÓ¦ÓóÌÐò£¨ÀýÈçÈ«²¿ÓÃJava´úÂë¶ø²»ÊDz»¿É¿¿µÄapplet £©JDBC½«´Ó±¾µØµÄÀà·¾¶ÀïÃæ»ñµÃÇý¶¯£¬²¢ÇÒÔÊÐíÓ¦ÓóÌÐò×ÔÓÉ´æÈ¡Îļþ£¬Ô¶³Ì·þÎñÆ÷µÈµÈ¡£
¡¡¡¡µ«ÊǺÍappletÒ»Ñù£¬Èç¹ûÓÉÓÚijЩԭÒòÒ»¸öûÓÐÑéÖ¤µÄsun.sql.DriverÀà´ÓÔ¶³ÌµÄÀ´Ô´ÀïÃæ»ñµÃ£¬ÄÇôÕâ¸öÇý¶¯Ö»ÄܺÍÏàͬµØ·½À´µÄ´úÂëÅäºÏ¡£
5. 3. DriverµÄ°²È«ÔðÈÎ
¡¡¡¡JDBC driver¿ÉÄÜÔÚ¸÷ÖÖÇé¿öÏÂʹÓã¬ËùÒÔÇý¶¯µÄ±àÖÆÕß×ñÑ­Ò»¶¨µÄ¼òµ¥µÄ°²È«¹æÔò£¬´Ó¶ø±ÜÃâapplet×ö·Ç·¨µÄÊý¾Ý¿âÁ¬½Ó¡£
¡¡¡¡Èç¹ûËùÓеÄÇý¶¯¶¼ÏóappletÒ»Ñù´ÓÍøÉÏÏÂÔØ£¬ÄÇôÕâЩԭÔò½«ÊDz»±ØÒªµÄ£¬ÒòΪÆÕͨµÄ°²È«¹æÔòÒѾ­¶ÔËü×öÁËÏÞÖÆ¡£µ«ÊÇÇý¶¯µÄ±àдÕß±ØÐë¼Çסһµ©ËûÃǵÄÇý¶¯»ñµÃ³É¹¦£¬Óû§½«ÔÚ±¾µØ´ÅÅ̰²×°ÕâЩÇý¶¯£¬ÄÇôÇý¶¯½«³ÉΪJava»·¾³ÖÐÒ»¸ö±»ÐÅÈεIJ¿·Ö£¬ËùÒÔ±ØÐëÈ·ÐÅËü²»»á±»À´·ÃµÄappletËùÀÄÓá£ËùÒÔÎÒÃǹÄÀøËùÓеÄÇý¶¯±àдÕß±ØÐë×ñÑ­Ò»¶¨°²È«Ô­Ôò¡£
¡¡¡¡ËùÓÐÕâЩԭÔò¶¼ÊÇÔÚÁ¬½Ó´ò¿ªµÄʱºòʹÓá£ÕâÕýʽÇý¶¯ºÍÐéÄâ»úÆ÷¼ì²éµ±Ç°µ÷ÓÃÕßÊÇ·ñÕæµÄ¿ÉÒÔÓëÖ¸¶¨µÄÊý¾Ý¿âÁ¬½ÓµÄʱ¿Ì¡£Ò»µ©Á¬½Ó½¨Á¢¾Í²»±Ø×ö¸ü¶àµÄ¼ì²éÁË¡£
5. 3. 1. ·ÖÏíTCP/IPÁ¬½ÓµÄʱºò±ØÐë½÷É÷¡¡¡¡Èç¹ûÒ»¸öJDBCÇý¶¯ÊÔͼ´ò¿ªÒ»¸ö TCP Á¬½Ó£¬ÄÇôÕâ¸ö´ò¿ª»á±»Java °²È«¹ÜÀí»úÖÆ×Ô¶¯¼ì²é¡£Õâ¸ö»ú¹¹»á¼ì²éµ±Ç°µ÷ÓÃÕ»ÀïÃæÓÐûÓÐapplet£¬Èç¹ûÓÐÄÇô¾ÍÏÞ¶¨Ëü¿ÉÒÔ·ÃÎʵĻúÆ÷¼¯ºÏ¡£ËùÒÔÒ»°ãµØJDBCÇý¶¯¿ÉÒÔ°ÑTCP½¨Á¢¼ì²éÁô¸øJavaÐéÄâ»ú¡£
¡¡¡¡µ«ÊÇÈç¹ûÒ»¸öJDBCÇý¶¯ÊÔͼÔÚ¶à¸öÊý¾Ý¿âÁ¬½ÓÖ®¼ä¹²ÏíÒ»¸öTCPÁ¬½Ó£¬ÄÇôÇý¶¯¾Í±ØÐë×Ô¼º¸ºÔð¼ì²éÿ¸öµ÷ÓÃÕßÊÇ·ñÕæµÄ±»ÔÊÐíÓëÄ¿±êÊý¾Ý¿âÁªÏµ¡£ÀýÈçÈç¹ûÎÒÃÇΪapplet A´ò¿ªÁËÒ»¸öͨÍù»úÆ÷foobah µÄTCPÁ¬½Ó£¬Õâ²¢²»Òâζ×Åapplet B±»×Ô¶¯ÔÊÐíÀ´¹²ÏíÕâ¸öÁ¬½Ó¡£applet B¿ÉÄÜûÓÐÈκηÃÎÊ»úÆ÷foobahµÄȨÁ¦¡£ËùÒÔÔÚÔÊÐíij¸ö³ÌÐòÖØÓÃÒ»¸öÏֳɵÄTCPÁ¬½Ó֮ǰ£¬JDBC Çý¶¯±ØÐëͨ¹ý°²È«»ú¹¹À´¼ì²éµ±Ç°µÄµÄµ÷ÓÃÕßÊÇ·ñ¿ÉÒÔ·ÃÎÊÕâ¸öÁ¬½Ó¡£Í¨¹ýÏÂÃæµÄ´úÂë¿ÉÊÇʵÏÖÕâ¸ö¹¦ÄÜ¡£


SecurityManager security = System.getSecurityManager();
if (security != null)
{
security.checkConnect(hostName, portNumber);
}


¡¡¡¡Èç¹ûÁ¬½ÓÊDz»ÔÊÐíµÄ£¬ÄÇôSecurity.checkConnect·½·¨½«²úÉúÒ»¸öjava.lang.SecurityException¡£ 5. 3. 2. ¼ì²éËùÓеı¾µØÎļþ·ÃÎÊ
¡¡¡¡Èç¹ûÒ»¸öJDBCÈ¡µÃÐèÒª·ÃÎʱ¾µØ»úÆ÷ÉϵÄÊý¾Ý£¬ÄÇôËû±ØÐëÈ·Ðŵ÷ÓÃÕßÊDZ»ÔÊÐí´ò¿ªÕâ¸öÎļþµÄ¡£ÀýÈ磺


SecurityManager security = System.getSecurityManager();
if (security != null)
{
security.checkRead(fileName);
}


¡¡¡¡Èç¹û¶ÔÌØ¶¨ÎļþµÄ·ÃÎÊÊDz»ÔÊÐíµÄ£¬ÄÇôSecurity.checkRead·½·¨½«²úÉúÒ»¸öjava.lang.SecurityException¡£
5. 3. 3. ×÷ºÃ×µÄ×¼±¸
¡¡¡¡Ò»Ð©Çý¶¯¿ÉÄÜʹÓñ¾µØµÄ·½·¨À´ÇŽӵײãÊý¾Ý¿â³ÌÐò¡£ÔòÕâЩÇé¿öÀïÃæÅжÏÄÇЩ±¾µØÎļþ½«±»µ×²ãº¯ÊýËù·ÃÎÊÊÇÀ§Äѵġ£
¡¡¡¡ÔÚÕâЩ»·¾³ÀïÃæÓû§±ØÐë×÷ºÃ×µÄ´òË㣬²¢ÇÒ·ñ¾öËùÓÐÏÂÔØappletËù·¢³öµÄÊý¾Ý¿â´æÈ¡£¬³ý·ÇÇý¶¯¿ÉÄÜÍêȫȷÐŽ«Òª×ö´æÈ¡ÊÇûÓÐÎÊÌâµÄ¡£
¡¡¡¡ÀýÈçÒ»¸öJDBC-ODBCÇŽӯ÷±ØÐë¼ì²éODBCÊý¾ÝÔ´µÄµÄÃû³Æ£¬È·±£appletÖ»¿ÉÒÔ·ÃÎÊËüµÄ¡°ÉúÔ´µØ¡±¡£Èç¹û¶ÔÓеÄÃû×ÖÖв»ÄÜÅжϳöÊý¾ÝÔ´µÄÖ÷»úÃû£¬ÄÇôֻÄÜ·ñ¾öÕâ¸ö·ÃÎÊ¡£
¡¡¡¡ÎªÁ˾ö¶¨Ò»¸öµ±Ç°µÄµ÷ÓÃÕßÊÇ¿ÉÒÔÐÅÀµµÄÓ¦Óû¹ÊÇÒ»¸öapplet£¬JDBCÇý¶¯±ØÐëÄܹ»¼ì²éÕâ¸öµ÷ÓÃÕßÊÇ·ñ¿ÉÒÔдһ¸öËæ»úµÄÎļþ£º


SecurityManager security = System.getSecurityManager();
if (security != null)
{
security.checkWrite("foobaz");
I. }

¡¡
À´¶¥Ò»ÏÂ
·µ»ØÊ×Ò³
·µ»ØÊ×Ò³
·¢±íÆÀÂÛ ¹²ÓÐÌõÆÀÂÛ
Óû§Ãû: ÃÜÂë:
ÑéÖ¤Âë: ÄäÃû·¢±í
ÍÆ¼ö×ÊѶ
ºóÄÁ¹¤ÒµÇø³§·¿1500ƽ³ö×â
ºóÄÁ¹¤ÒµÇø³§·¿1500ƽ
ÏÖʵµÄͯ»°¹«Ö÷°¬Ãס¤ÂÞÉ­
ÏÖʵµÄͯ»°¹«Ö÷°¬Ãס¤
¿Æ±ÈרΪ´ó³¡Ãæ¶øÉú
¿Æ±ÈרΪ´ó³¡Ãæ¶øÉú
¡°×îÃÀÇå½à¹¤¡±Ô­ÊÇ¡¶³à±Ú¡·¹¬Å®
¡°×îÃÀÇå½à¹¤¡±Ô­ÊÇ¡¶
Ïà¹ØÎÄÕÂ
    ÎÞÏà¹ØÐÅÏ¢
À¸Ä¿¸üÐÂ
À¸Ä¿ÈÈÃÅ