³¯Â¥: 1996-05-09 | ±Û¾´ÀÌ: µµ¾Æ | 7085 ¹ø | ÇÁ¸°Æ® | ¸ÞÀϷκ¸³»±â

Á¦ 9°­ - msqlperl - relshow ±¸Çö


ÀÌÁ¦ ¾Õ¿¡¼­ ¹è¿î msqlperlÀ» ÀÌ¿ëÇؼ­ Unix ¸í·ÉÇà¿¡¼­ Å×ÀÌºí ½ºÅ°¸¶¸¦ º¸´Âµ¥ »ç¿ëÇß´ø relshow¸¦ ±¸ÇöÇϵµ·Ï ÇÏÀÚ.

relshow ¸í·ÉÀº ´ÙÀ½°ú °°ÀÌ ¼¼°¡Áö Çü½ÄÀ¸·Î »ç¿ëµÈ´Ù.

Unix ¸í·ÉÇà ¼³¸í CGI
relshow DB ¸ñ·ÏÀ» Ãâ·Â listdb.cgi
relshow dB Ç¥ÀÇ ¸ñ·ÏÀ» Ãâ·Â listtb.cgi
relshow dB table Ç¥ÀÇ ½ºÅ°¸¶¸¦ Ãâ·Â listfd.cgi

À§¿Í °°Àº relshow ¸í·ÉÀº listdb.cgi, listtb.cgi, listfd.cgi¶ó´Â ¼¼ °³ÀÇ CGI·Î ±¸ÇöµÇ¾ú´Ù. DB ¸ñ·Ï(listdb.cgi)

µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·ÏÀ» Ãâ·ÂÇϱâÀ§ÇØ listdbs ¸Þ¼Òµå¸¦ »ç¿ëÇß´Ù. ¼Ò½º

 1 : #!/usr/local/bin/perl -w
 2 : 
 3 : use Msql;
 4 : 
 5 : $dbh = Msql->connect;
 6 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
 7 : 
 8 : @arr = $dbh->listdbs;
 9 : 
10 : print &PrintHeader;
11 : print &HtmlTop("µ¥ÀÌŸº£À̽º ¸ñ·ÏÀÔ´Ï´Ù.");
12 : print '<form method=post action="/~artech/cgi-bin/listtb.cgi">', "\n";
13 : print '<select name="database">', "\n";
14 : 
15 : for(0..$#arr) {
16 : 	print "<option>$arr[$_]\n"; 
17 : } 
18 : 
19 : print "</select>\n"; 
20 : print "<input type=submit value='º¸³»±â'>";
21 : print "</form>";
22 : print &HtmlBot; 
½ÇÇà°á°ú
¼³¸í
use Msql;
Msql.pmÀ̶ó´Â ¸ðµâÀ» »ç¿ëÇÏ°Ú´Ù´Â ¼±¾ðÀÌ´Ù. msqlperlÀ» »ç¿ëÇϱâ Àü¿¡´Â ¹Ýµå½Ã ÀÌ ¹®ÀåÀ» ÀÌ¿ëÇؼ­ Msql.pm ¸ðµâÀ» °¡Á®¿Í¾ß ÇÑ´Ù.

$dbh = Msql->connect;
Msql Å©·¡½º¸¦ ÀÌ¿ëÇؼ­ ·ÎÄ® dB ¿£Áø¿¡ Á¢¼ÓÇÑ´Ù. À¥¼­¹ö¿Í dB ¼­¹ö°¡ ¼­·Î ´Ù¸¥ È£½ºÆ®¿¡ ÀÖ´Â °æ¿ì¿¡´Â dB ¼­¹öÀÇ ÁÖ¼Ò¸¦ ÁÖ¸éµÈ´Ù. ±×·¯³ª À¥¼­¹ö¿Í dB ¼­¹ö°¡ °°Àº È£½ºÆ®¿¡ ÀÖ´Â °æ¿ì¿¡´Â TCP/IP ¼ÒÄÏÀ» ÀÌ¿ëÇÏ´Â °Íº¸´Ù´Â Unix ¼ÒÄÏÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ ¼º´É¸é¿¡¼­´Â ¿ì¼öÇϹǷΠ±»ÀÌ È£½ºÆ®ÀÇ ÁÖ¼Ò¸¦ ÁÙ ÇÊ¿ä´Â ¾ø´Ù.

defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
µ¥ÀÌÅͺ£À̽º ¿£Áø°úÀÇ Á¢¼ÓÀÌ ¼³Á¤µÇ¾ú´ÂÁö¸¦ °Ë»çÇÏ´Â ºÎºÐÀÌ´Ù. Á¢¼ÓÀ̵ÇÁö ¾ÊÀº °æ¿ì cgi-lib.plÀÇ CgiDie() ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ­ ¿À·ù¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ÆÞÀÇ °ü·Ê»ó ¼­ºê·çƾÀº &·Î ½ÃÀÛÇØ¾ß ÇÏÁö¸¸, &¸¦ »ý·«ÇÏ°í ÀÏ¹Ý ¾ð¾îÀÇ ÇÔ¼öó·³ »ç¿ëÇصµ ¹«°üÇÏ´Ù.

@arr = $dbh->listdbs;
µ¥ÀÌŸº£À̽ºÀÇ ¸ñ·ÏÀ» °¡Á®¿Í¼­ @arrÀ̶ó´Â ¹è¿­¿¡ ÀúÀåÇÑ´Ù. µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·ÏÀ» °¡Á®¿À´Â CGIÀ̹ǷΠselectdb ¸Þ¼Òµå¸¦ »ç¿ëÇؼ­ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇÒ ÇÊ¿ä´Â ¾ø´Ù. »ç½Ç»ó mSQL ¿£Áø¿¡´ëÇÑ ÁúÀÇ°¡ ³¡³ª´Â ÁöÁ¡À̸ç, ÀÌ ÈÄ´Â ÀÌ·¸°Ô °¡Á®¿Â µ¥ÀÌÅÍ´Â HTML·Î º¯È¯ÇÏ´Â ºÎºÐ¿¡ ºÒ°úÇÏ´Ù.

10~22
@arr ¹è¿­ÀÇ ³»¿ëÀ¸·Î ¼±Åøñ·ÏÀ» ¸¸µå´Â ºÎºÐÀÌ´Ù. <FROM> ű×ÀÇ ActionÀº listdb.cgi·Î µÇ¾îÀÖÀ¸¸ç, <SELECT> ű×ÀÇ NAME ¼Ó¼ºÀÌ database·Î µÇ¾îÀÖ´Ù´Â °Í¿¡ ÁÖÀÇÇϱâ¹Ù¶õ´Ù. »ç¿ëÀÚ°¡ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇϸé
database=¼±ÅÃÇÑDB
Çü½ÄÀ¸·Î listtb.cgi¿¡ ÀÎÀÚ¸¦ Àü´ÞÇϰԵȴÙ.
Å×ÀÌºí ¸ñ·Ï(listtb.cgi)

listtb.cgi´Â listdb.cgi·ÎºÎÅÍ ³Ñ°Ü¹ÞÀº µ¥ÀÌÅͺ£À̽º¿¡´ëÇÑ Å×À̺íÀÇ ¸ñ·ÏÀ» º¸¿©ÁÖ´Â CGIÀÌ´Ù. ¼Ò½º

 1 : #!/usr/local/bin/perl -w
 2 : 
 3 : require './cgi-lib.pl';
 4 : 
 5 : &ReadParse;
 6 : 
 7 : use Msql;
 8 : 
 9 : $dbh = Msql->connect;
10 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
11 : 
12 : $dbh->selectdb($in{'database'});
13 : 
14 : @arr = $dbh->listtables;
15 : 
16 : print &PrintHeader;
17 : print &HtmlTop("Å×ÀÌºí ¸ñ·ÏÀÔ´Ï´Ù.");
18 : 
19 : print "<form method=post action="/~artech/cgi-bin/listfd.cgi">";
20 : print "<select name="table">\n";
21 : for(0..$#arr) {
22 : 
23 : print "<option>$arr[$_]\n";
24 : }
25 : print "</select>\n";
26 : print "<input type=hidden name=database value="$in{database}">";
27 : print "<input type=submit value='º¸³»±â'>";
28 : print "</form>";
29 : 
30 : print &HtmlBot;
½ÇÇà°á°ú
¼³¸í
require './cgi-lib.pl';
¾Õ¼­ º¸¾Òµí cgi-lib.plÀ̶ó´Â ¶óÀ̺귯¸®¸¦ °¡Á®¿À´Â ºÎºÐÀÌ´Ù. cgi-lib.plÀ̶ó´Â ¶óÀ̺귯¸®°¡ ÆÞÀÇ Ç¥ÁØ ¶óÀ̺귯¸® °æ·Î(@INC)¿¡ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀº °æ¿ì¿¡´Â ¶óÀ̺귯¸®ÀÇ ¿ÏÀüÇÑ °æ·Î¸¦ ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ ¶óÀ̺귯¸®°¡ ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â °æ¿ì¿¡´Â ¿¹¿¡¼­Ã³·³ ÇöÀç µð·ºÅ丮ÀÓÀ» ¹Ýµå½Ã Ç¥½ÃÇØ ÁÖ¾î¾ß ÇÑ´Ù.

&ReadParse;
cgi-lib.pl¿¡¼­ °¡Àå Áß¿äÇÑ ·çƾÀ¸·Î Æû µ¥ÀÌÅ͸¦ µðÄÚµùÇÏ´Â ·çƾÀÌ´Ù. cgi-lib.plÀº Off-line ¸ðµå¸¦ Áö¿øÇϹǷΠ»ç¿ëÀÚÀÇ ÀÔ·ÂÀÌ ´ÙÀ½°ú °°ÀÌ ÀÎÄÚµùµÇ¾î Àü´ÞµÈ´Ù¸é
database=commlab&table=book
Unix ¸í·ÉÇà¿¡¼­ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¸é µÈ´Ù.
listdb.cgi database=commlab table=book

7~10
listdb.cgi¿Í µ¿ÀÏÇÏ´Ù.

$dbh->selectdb($in{'database'});
Å×À̺íÀÇ ¸ñ·ÏÀ» ¾ò±âÀ§ÇØ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇÏ´Â ¹®ÀåÀÌ´Ù. µ¥ÀÌÅͺ£À̽ºÀÇ À̸§Àº listdb.cgi°¡ Àü´ÞÇÑ´Ù.

@arr = $dbh->listtables;
¼±ÅÃÇÑ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ Å×À̺íÀÇ ¸ñ·ÏÀ» °¡Á®¿Í @arrÀ̶ó´Â ¹è¿­¿¡ ÀúÀåÇÑ´Ù.

print "<input type=hidden name=database value="$in{database}">";
listfd.cgi´Â Å×À̺íÀÇ ½ºÅ°¸¶¸¦ Ãâ·ÂÇÏ´Â CGIÀÌ´Ù. Å×ÀÌºí ½ºÅ°¹Ì¸¦ Ãâ·ÂÇϱâÀ§Çؼ­´Â µ¥ÀÌÅͺ£À̽ºÀÇ À̸§°ú Å×À̺íÀÇ À̸§ÀÌ ÇÊ¿äÇÏ´Ù. listtb.cgi´Â Å×À̺íÀÇ À̸§¸¸ listfd.cgi¿¡ °Ç³×ÁÙ ¼ö ÀÖÀ¸¹Ç·Î ÀÌÀü¿¡ listdb.cgi¸¦ ÀÌ¿ëÇؼ­ ¼±ÅÃÇÑ µ¥ÀÌÅͺ£À̽ºÀÇ À̸§Àº <INPUT> ű×ÀÇ HIDDEN Çü½ÄÀ» ÀÌ¿ëÇؼ­ listfd.cgi¿¡ Àü´ÞÇØ¾ß ÇÑ´Ù. À¥Àº »óÅÂÁ¤º¸¸¦ À¯ÁöÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÀÌ¿Í°°ÀÌ <INPUT> ű×ÀÇ HIDDEN Çü½ÄÀ» ÀÌ¿ëÇؼ­ ÀÌÀü »óÅÂÁ¤º¸¸¦ ´ÙÀ½ CGI¿¡ Àü´ÞÇϰԵȴÙ.

16~30
@arr¿¡ ÀúÀåµÈ Å×À̺íÀÇ ¸ñ·ÏÀ» HTML·Î º¯È¯ÇÏ´Â ºÎºÐÀÌ´Ù. <SELECT> ű׿¡¼­ ÁöÁ¤ÇÑ À̸§°ú »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ °ª, 26 ÇàÀÇ <INPUT>ÀÇ À̸§°ú °ªÀÌ ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î listfd.cgi¿¡ Àü´ÞµÈ´Ù.
database=commlab&table=book
Å×ÀÌºí ½ºÅ°¸¶ Ãâ·Â(listfd.cgi)

´ÙÀ½Àº listtb.cgi·ÎºÎÅÍ ³Ñ°Ü¹ÞÀº µ¥ÀÌÅͺ£À̽ºÀÇ À̸§°ú Å×À̺í À̸§À¸·Î Å×ÀÌºí ½ºÅ°¸¶¸¦ Ãâ·ÂÇÏ´Â CGIÀÌ´Ù. ¼Ò½º

 1 : #!/usr/local/bin/perl -w
 2 : 
 3 : require './cgi-lib.pl';
 4 : 
 5 : &ReadParse;
 6 : 
 7 : use Msql;
 8 :
 9 : $dbh = Msql->connect; 
10 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
11 : 
12 : $dbh->selectdb($in{'database'});
13 : 
14 : $sth = $dbh->listfields($in{'table'});  
15 :
16 : unless(defined($sth)) {
17 : 	$msg = $dbh->errmsg;
18 : 	CgiDie("$msg"); 
19 : }
20 :
21 : @fields = $sth->name;
22 : @types = $sth->type;
23 : @isnull = $sth->isnotnull; 
24 : @length = $sth->length;
25 : 
26 : print &PrintHeader;
27 : print &HtmlTop("$in{'table'}ÀÇ ½ºÅ°¸¶ÀÔ´Ï´Ù.");
28 :
29 : print "<ul>\n";
30 : 
31 : for(0..$#fields) {
32 : 	print "<li> $fields[$_], ";
33 : 	do {
34 : 		print "Á¤¼öÇü, " if $types[$i] == Msql::INT_TYPE;
35 : 		print "¹®ÀÚÇü, " if $types[$i] == Msql::CHAR_TYPE;
36 : 		print "½Ç¼öÇü, " if $types[$i] == Msql::REAL_TYPE;
37 : 		print "ÅؽºÆ®Çü, " if $types[$i] == Msql::TEXT_TYPE;
38 : 		print "³¯ÀÚÇü, " if $types[$i] == Msql::DATE_TYPE;
39 : 		print "ºÎÈ£¾ø´Â Á¤¼öÇü, " if $types[$i] == Msql::UINT_TYPE;
40 : 		print "È­ÆóÇü, " if $types[$i] == Msql::MONEY_TYPE;
41 : 		print "½Ã°£Çü, " if $types[$i] == Msql::TIME_TYPE;
42 : 	};
43 :  
44 : 	do {
45 : 		print "ÇÊ¿äÇʵå, " if $isnull[$i] == 0;
46 : 		print "Á¶°ÇÇʵå, " if $isnull[$i] != 0;
47 : 	};
48 :  
49 : 	print "$length[$i] ¹ÙÀÌÆ® <br>\n";
50 : }   
51 : 
52 : print "</ul><p>\n";
53 : 
54 : print &HtmlBot;
½ÇÇà°á°ú
¼³¸í
1~12
listdb.cgi, listtb.cgi¿Í µ¿ÀÏÇÏ´Ù. msqlperlÀ» ÀÌ¿ëÇؼ­ dB ¿£Áø¿¡ Á¢¼ÓÇÏ°í Á¢¼ÓµÈ ¿£ÁøÀ¸·ÎºÎÅÍ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇÏ´Â ºÎºÐÀÌ´Ù.

$sth = $dbh->listfields($in{'table'});
µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ ÁöÁ¤µÈ Å×À̺íÀÇ ½ºÅ°¸¶¸¦ °¡Á®¿Â´Ù. µ¥ÀÌÅͺ£À̽ºÀÇ À̸§°ú Å×À̺íÀÇ À̸§Àº listtb.cgi·ÎºÎÅÍ Àü´ÞµÈ´Ù.

16~19
listfields ¸Þ¼Òµå°¡ Á¦´ë·Î ¼öÇàµÇ¾ú´ÂÁö´Â °Ë»çÇÏ´Â ¹®ÀåÀÌ´Ù. listfieldsÀÇ ¼öÇàÀÌ ¼º°øÀûÀ̶ó¸é $sth´Â ½ºÅ×ÀÌÆ®¸ÕÆ® ÇîµéÀ» °®°ÔµÇ¸ç, ±×·¸Áö ¸øÇÑ °æ¿ì¿¡´Â Á¤ÀǵÇÁö ¾Ê´Â´Ù. µû¶ó¼­ $sth°¡ Á¤ÀǵǾú´ÂÁö(ÃʱâÈ­µÇ¾ú´ÂÁö)¸¦ °Ë»çÇؼ­ Á¤ÀǵÇÁö ¾ÊÀº °æ¿ì, ¿À·ù¸Þ½ÃÁö¸¦ CgiDie¸¦ ÅëÇØ Ãâ·ÂÇÏ´Â ¹®ÀåÀÌ´Ù. $dbh->errmsg;´Â ÀÌÀü ÁúÀÇ°¡ ½ÇÆÐÇÑ °æ¿ì ¿À·ù¸Þ½ÃÁö¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ¸Þ½ÃÁö´Â msql ¸ð´ÏÅÍ ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¶§ Ãâ·ÂµÇ´Â ¸Þ½ÃÁö¿Í Á¤È®È÷ µ¿ÀÏÇϹǷΠSQL ¹®ÀÇ ¿À·ù¸¦ °Ë»çÇϴµ¥ ¾ÆÁÖ Áß¿äÇÑ ¸Þ¼ÒµåÀÌ´Ù.
16 : unless(defined($sth)) {
17 : 	$msg = $dbh->errmsg;
18 : 	CgiDie("$msg"); 
19 : }

21~24
½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµé($sth)À» ÀÌ¿ëÇؼ­ ÇÊ¿äÇÑ ¸ÞŸµ¥ÀÌŸ(Çʵå¸í, ÇʵåŸÀÔ, Not null ¿©ºÎ, ±æÀÌ)¸¦ °¡Á®¿Í¼­ ¹è¿­·Î ÀúÀåÇÑ´Ù.

34~41
ÇʵåŸÀÔÀ» ÆÇÁ¤ÇϱâÀ§ÇØ MsqlÀÇ ³»ºÎ »ó¼ö¸¦ »ç¿ëÇß´Ù. °¢°¢ÀÇ ³»ºÎ »ó¼ö´Â ´ÙÀ½°ú °°Àº °ªÀ» °®´Â´Ù.
Msql::INT_TYPE		  1		# Á¤¼öÇü
Msql::CHAR_TYPE		  2		# ¹®ÀÚÇü
Msql::REAL_TYPE		  3		# ½Ç¼öÇü
Msql::IDENT_TYPE	  4		#Ident Çü
Msql::NULL_TYPE		  5		# Null Çü
Msql::TEXT_TYPE		  6		# ÅؽºÆ®Çü
Msql::DATE_TYPE		  7		# ³¯ÀÚÇü
Msql::UINT_TYPE		  8		#Á¤¼öÇü(ºÎÈ£¾ø´Â)
Msql::MONEY_TYPE	  9		# È­ÆóÇü
Msql::TIME_TYPE		 10		# ½Ã°£Çü
Msql::IDX_TYPE		253		#À妽º
Msql::SYSVAR_TYPE	254		# ½Ã½ºÅÛ º¯¼ö

26~54
°¡Á®¿Â ½ºÅ°¸¶¸¦ HTML·Î Ãâ·ÂÇÏ´Â ¹®ÀåÀÌ´Ù. ÀϹÝÀûÀÎ ±¸¼ºÀº ¾ÕºÎºÐ°ú µ¿ÀÏÇϸç, ºí·ÏÈ­¸¦ À§ÇØ do{..};¹®À» »ç¿ëÇß´Ù.


´ÙÀ½±Û: Á¦ 10°­ - msqlperl - msql (8233)1996-05-10
ÀÌÀü±Û: Á¦ 8°­ - msqlperlÀÇ »ç¿ë¹ý (7380)1996-05-08

¼¼»ó»ç´Â À̾߱â



RSS ±¸µ¶ (À͸í | ȸ¿ø | °­Á | Æ÷·³)
(C) 1996 ~ 2017 QAOS.com All rights reserved.