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

ÆÞ ÀÀ¿ë - Á¦ 3°­ ODBC °³Ã¼ - °è¼Ó


°³Ã¼ ¸Þ¼Òµå ÀϹÝÀû ÁÖÀÇ ¸ðµç ¸Þ¼Òµå´Â
	
use Win32::ODBC;
¿Í °°Àº ÇàÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇϱâÀü ¾îµð¿£°¡ ¹Ýµå½Ã Á¸ÀçÇؾßÇϸç $db¶ó°í ºÎ¸£´Â ODBC °³Ã¼¸¦ °¡Áö°í ÀÖ´Â °ÍÀ¸·Î °¡Á¤ÇÑ´Ù. $db´Â ´ÙÀ½°ú ºñ½ÁÇÏ°Ô »ç¿ëµÈ´Ù:
	
$db = new Win32::ODBC("MyDSN");
Ãß°¡ÀûÀÎ Á¤º¸´Ânew¸¦ º»´Ù. ¶ÇÇÑ ¿¹¸¦ °£´ÜÈ÷±âÀ§ÇØ ¸®ÅÏ °ª¿¡´ëÇÑ ¾î¶°ÇÑ ¿À·ù°Ë»çµµ ¼öÇàµÇÁö ¾Ê¾Ò´Ù. ¿¹µéÀº ´ÜÁö ¿¹½Ã¸¦ À§ÇÑ °ÍÀÌ´Ù. ½ÇÁ¦ ÄÚµùÀ» ÇÒ¶§¿¡´Â Ç×»ó ¿À·ù Á¶°ÇÀ» °Ë»çÇØ¾ß ÇÑ´Ù. °æ°í: ¿¹Á¦ ÄÚµåµéÀ» ½ÃÇèÇÏÁö ¾Ê¾Ò´Ù. ¸Þ¼Òµå
Catalog qualifier, owner, name, type
Çö ODBC °³Ã¼¸¦ Ä«´Þ·Î±×·ÎºÎÅÍ º¹±¸ÇÑ´Ù. ³×°³ÀÇ °ªÀ» °®´Â ¹è¿­(Qualifier, Owner, Name, Type)À» ¸®ÅÏÇÑ´Ù. ÁÖÀÇ:¸ðµç Çʵå¸íÀº ´ë¹®ÀÚÀÌ´Ù. ¿¹:
	($qualifier, $owner, $name, $type) = $db->Catalog("", "", "%", "'TABLE'");
Connection
°³Ã¼ÀÇ ODBC Á¢¼Ó ¼ö¸¦ ¸®ÅÏÇÑ´Ù. ¿¹:
$cnum = $db->Connection;
Close
ÀÌ °³Ã¼¿¡´ëÇÑ ODBC Á¢¼ÓÀ» ´Ý´Â´Ù. Ç×»ó undefÀ» ¸®ÅÏÇÑ´Ù. ¿¹:
$db->Close();
Data
Data list
Çʵå¸íÀÇ ¸ñ·Ï¿¡´ëÇØ ÀÌÀü¿¡ °¡Àú¿Â µ¥ÀÌŸ¸¦ º¹±¸ÇÑ´Ù. ½ºÄ®¶ó·Î ¹ÞÀ» °æ¿ì ÀÌ °ÍÀº ÇÔ²² °áÇÕµÈ ¸ðµç ÇÊµå °ªÀ» ¸®ÅÏÇÑ´Ù. ¹è¿­·Î ¹ÞÀ» °æ¿ì °ªÀÌ Á¤ÀÇµÈ ¼ø¼­·Î °ªÀÇ ¹è¿­ÀÌ ¸®ÅϵȴÙ. Çʵå¸íÀ» ÁÖÁö¾ÊÀ¸¸é Á¤ÀǵÇÁö ¾ÊÀº ¼ø¼­·Î ¸ðµç Çʵ尡 ¸®ÅϵȴÙ. ¿¹:
$db->Sql("SELECT f1, f2, f3 FROM foo");
$db->FetchRow();
($f1, $f2) = $db->Data("f1", "f2");

¶Ç´Â

$db->Sql("SELECT * FROM foo");
$db->FetchRow();
@values = $db->Data;
¶ÇÇÑ: DataHash
DataHash
DataHash list
Çʵå¸íÀ¸·Î ¸ñ·Ï¿¡´ëÇØ ÀÌÀü¿¡ °¡Á®¿Â µ¥ÀÌŸ¸¦ º¹±¸ÇÑ´Ù. Çʵå¸íÀÌ Å°ÀÎ ¿¬°ü¹è¿­À» ¸®ÅÏÇÑ´Ù. Çʵå¸íÀÌ ÁÖ¾îÁöÁö¾ÊÀ¸¸é ¸ðµç Çʵ尡 ¸®ÅϵȴÙ. ¿¹:
$db->Sql("SELECT f1, f2, f3 FROM foo");
$db->FetchRow();
%hash = $db->DataHash("f1", "f2");
print $hash{f1};

¶Ç´Â

$db->Sql("SELECT * FROM foo");
$db->FetchRow();
%hash = $db->DataHash;
foreach $key (sort(keys %hash)) {
	print $key, '=', $hash{$key}, "
";
}
¶ÇÇÑ: Data
DataSources
´ÙÀ½°ú °°Àº ÇüÅ·Πµ¥ÀÌŸ ¼Ò½º¿Í ODBC Á¤º¸¿¡´ëÇÑ ¿¬°ü¹è¿­À» ¸®ÅÏÇÑ´Ù.
$ArrayName{'DSN'} = Remark
¿©±â¼­ DSNÀº Data Source NameÀ̸ç Remark´Â Á¤º¸ÀÌ´Ù. ¿¹:
%rem = $db->DataSources;
print LOG qq(Current DSN's Remark: "), %rem{$db->GetDSN}, qq("
);
Drivers
´ÙÀ½°ú °°Àº ÇüÅ·Πµå¶óÀ̹ö¿Í µå¶óÀ̹ö ¼Ó¼º¿¡´ëÇÑ ¿¬°ü¹è¿­¸¦ ¸®ÅÏÇÑ´Ù.
$ArrayName{'DRIVER'} = Attrib1;Attrib2;Attrib3;...
¿©±â¼­ DRIVER´Â ODBC µå¶óÀ̹öÀÇ À̸§ÀÌ°í AttribX´Â µå¶óÀ̹ö¿¡ Á¤ÀÇµÈ ¼Ó¼ºÀÌ´Ù. ¿¹:
%attrib = $db->Drivers;
print LOG qq($driver: $attrib{$driver}
) 
	foreach $driver (keys %attrib);
DumpError
¸¶Áö¸· ¿À·ùÁ¶°Ç¿¡´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×À» ´ýÇÁÇÑ´Ù. ÀÌ °ÍÀº ¿À·ù ¹øÈ£, ¿À·ù ¹®Àå°ú ¿À·ù¸¦ ¹ß»ýÇÑ ODBC Á¢¼Ó ¼ö¸¦ Æ÷ÇÔÇÑ´Ù. ÀÌ °ÍÀº ÁÖ·Î µð¹ö±ë¿¡ »ç¿ëµÈ´Ù. ¿¹:
$db = new Win32::ODBC("My DSN");
if (undef $db){
    Win32::ODBC::DumpError();
}
if ($db->Sql("Select * FROM foo")){
    $db->DumpError;
}
DumpData
ÇöÀçÀÇ µ¥ÀÌŸÁýÇÕÀÇ ¸ðµç Çà³»¿¡ Á¸ÀçÇÏ´Â Çʵå¸í°ú µ¥ÀÌŸ¸¦ ´ýÇÁÇÑ´Ù. ÀÌ °ÍÀº ÁÖ·Î µð¹ö±ë¿¡ »ç¿ëµÈ´Ù. ¿¹:
$db->Sql("Select * FROM foo");
$db->DumpData;
Error
¸¶Áö¸·À¸·Î ±â·ÏµÈ ¿À·ù¸¦ ¹è¿­À̳ª ½ºÄ®¶ó ÇüÅ·Π¸®ÅÏÇÑ´Ù(ȯ°æ¿¡µû¶ó). ¿©±â¿¡´Â ¿À·ù¹øÈ£, ¿À·ù ¹®Àå°ú ¿À·ù¸¦ ¹ß»ýÇÑ ODBC Á¢¼ÓÀ» Æ÷ÇÔÇÑ´Ù. ¿¹:
die $db->Error(), qq(
);

($ErrNum, $ErrText, $ErrConn) = $db->Error();
FetchRow
ÀÌÀü¿¡ Á¤ÀÇÇÑ SQL¹®À¸·ÎºÎÅÍ ´ÙÀ½ÇàÀÇ µ¥ÀÌŸ¸¦ °¡Á®¿Â´Ù. ¶ÇÇÑ Data³ª DataHashÀ» È£Ãâ, µ¥ÀÌŸ °¢°¢ÀÇ ¿ä¼Ò¸¦ ½ÇÁ¦ÀûÀ¸·Î º¹¿øÇÒ ¼ö ÀÖ´Ù. ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì undef¸¦ ¸®ÅÏÇϸç, ±×·¸Áö¾ÊÀº °æ¿ì, TRUE¸¦ ¸®ÅÏÇÑ´Ù. ¿¹:
$db->Sql("SELECT * FROM foo");
$db->FetchRow() || die qq(Fetch error: ), $db->Error(), qq(
);
$f1 = $db->Data("f1");
¶ÇÇÑ: Sql, Data, DataHash
FieldNames
ÇöÀçÀÇ µ¥ÀÌŸÁýÇÕ¿¡¼­ ÃßÃâµÈ Çʵå¸íÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù. ÀÌ°ÍÀº ÁÖ·Î ½ÃÇè/µð¹ö±ë¿¡ »ç¿ëµÈ´Ù. FieldNamesÀº ¹è¿­·Î µ¥ÀÌŸ¸¦ ¸®ÅÏÇϸç Çʵå¸íÀÇ ¼ø¼­´Â º¸ÀåµÇÁö¾Ê´Â´Ù. ¿¹:
$db->Sql("SELECT * FROM foo");
$db->FetchRow();
foreach $fd ($db->FieldNames()) 
	print qq($fd: "), $db->Data($fd), qq("
);
GetConnections
¸ðµç °³Ã¼¿¡´ëÇÑ Á¢¼Ó¼ö¸¦ ¹è¿­·Î ¸®ÅÏÇÑ´Ù. ¿¹:
@cnums = $db->GetConnections;
GetDSN
GetDSN conn
connÀ̳ª ÇöÀç Á¢¼Ó(Á¤ÀǵÇÁö ¾ÊÀº °æ¿ì)¿¡´ëÇÑ DSN(Data Source Name)À̳ª ODBCDriverConnect ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù. ¿¹:
print LOG qq(Current connection: "), $db->GetDSN, qq("
);
GetMaxBufSize
ÇöÀç °¡Àå Å« ÇÊµå µ¥ÀÌŸÀÇ Å©±â¸¦ ¹ÙÀÌÆ®·Î ¸®ÅÏÇÑ´Ù. ¿¹:
$max = $db->GetMaxBufSize;
$db->SetMaxBufSize($needed) if ($max < $needed);
¶ÇÇÑ: SetMaxBufSize
GetStmtCloseType
ÇöÀç ODBCÀÇ ´Ý±â Çü½ÄÀ» ¸®ÅÏÇÑ´Ù. ÀÌ°ÍÀº ÁÖ·Î µð¹ö±ë¿¡ »ç¿ëµÈ´Ù. ´Ý±â Çü½ÄÀº SQL_CLOSE, SQL_DROP, SQL_UNBIND³ª SQL_RESET_PARAMS Áß ÇϳªÀÌ´Ù. °¢ Çü½ÄÀÌ ÀǹÌÇÏ´Â ¹Ù¿Í ¾î¶»°Ô »ç¿ëÇÏ´Â °¡´Â SetStmtCloseType¸¦ º»´Ù. ¿¹:
$oldct = $db->GetStmtCloseType;
$db->SetStmtCloseType(SQL_DROP);
...
$db->SetStmtCloseType($oldct);
¶ÇÇÑ: SetStmtCloseType
MoreResults
´õ¸¹Àº °á°ú ÁýÇÕÀÌ Á¸ÀçÇϴ°¡¸¦ Á¶»çÇÏ°í ´ÙÀ½ °á°ú ÁýÇÕÀ¸·ÎºÎÅÍ ÇàÀ» °¡Á®¿À±âÀ§ÇØ ÃʱâÈ­ÇÑ´Ù. ±×¸®°í FetchRowÀ» È£Ãâ, ´ÙÀ½ °á°úÁýÇÕÀÇ ´ÙÀ½ ÇàÀ» ½ÇÁ¦·Î °¡Á®¿Â´Ù. ¿À·ù°¡ ¹ß»ýÇϸé undef¸¦ ¸®ÅÏÇϸç, ±×·¯Ä¡¾ÊÀ¸¸é TRUE¸¦ ¸®ÅÏÇÑ´Ù. ¿¹:
$db->Sql("SELECT * FROM foo
  SELECT * FROM bar");
$db->FetchRow() || die qq(Fetch error: ), $db->Error(), qq(
);
$f1 = $db->Data("f1");
$db->MoreResults() || die qq(Error checking for more result sets: ), 
		$db->Error(), qq(
);
$db->FetchRow() || die qq(Fetch error: ), $db->Error(), qq(
);
$f1 = $db->Data("f1");
¶ÇÇÑ: Sql, Data
new Win32::ODBC(DSN)
new Win32::ODBC(ODBCDriverConnect)
DSN(Data Source Name)À̳ª Àû´çÈ÷ Çü½ÄÈ­µÈ ODBCDriverConnect ¹®ÀÚ¿­À» ÁÖ¸é »õ·Î¿î ODBC °³Ã¼¸¦ »ý¼ºÇÑ´Ù. »ý¼ºµÈ ODBC °³Ã¼¸¦ ¸®ÅÏÇÏ¸ç ¿À·ù°¡ ÀÖ´Â °æ¿ì undefÀ» ¸®ÅÏÇÑ´Ù. ¿¹:
$DSN = "MyDSN";
$db = new Win32::ODBC($DSN);
die qq(Cannot open new ODBC
) if ! $db;

¶Ç´Â

$db = new Win32::ODBC("dsn=FOO;UID=BAR;PWD=FUBAR");
die qq(Cannot open new ODBC
) if ! $db;
RowCount
ÀÌÀü SQL ¸í·ÉÀÌ ¿µÇâÀ» ¹ÌÄ£ ÇàÀÇ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. ÁÖÀÇ: ÀÌ °ÍÀº ¸ðµç ODBC Á¢¼Ó¿¡´ëÇØ µ¿ÀÛÇÏÁö´Â ¾Ê´Â´Ù. ¿¹:
$db->Sql("SELECT * FROM foo");
print DBG q(# of records: ), $db->RowCount(), qq(
);
Run stmt
SQL ¹®, stmt¸¦ Á¦ÃâÇÏ°í ÀÌ°Í¿¡´ëÇÑ µ¥ÀÌŸ¸¦ Ãâ·ÂÇÑ´Ù. ÀÌ°ÍÀº ´ÜÁö µð¹ö±ë¿¡¼­¸¸ »ç¿ëµÈ´Ù. ¿¹:
$db->Run("SELECT * FROM foo");
¶ÇÇÑ: Sql
SetMaxBufSize size
FetchRow¸¦ ¼öÇàÇÒ ¶§ ´ÜÀÏ Çʵ忡 ÇÒ´çµÉ ¼ö ÀÖ´Â ÃÖ´ë ¹öÆÛÀÇ Å©±â¸¦ ¼³Á¤ÇÑ´Ù. ±âº»°ªÀº 10240 ¹ÙÀÌÆ®À̸ç, ÃÖ´ë°ªÀº 2147483647ÀÌ´Ù. ÃÖ´ë°ªÀº ¸ðµâÀ» ÄÄÆÄÀÏÇÔÀ¸·Î¼­ ´Ù½Ã ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¼º°øÀûÀ̸é undef¸¦ ¸®ÅÏÇÑ´Ù. ¿¹:
$newsize = 20480;
$rc = $db->SetMaxBufSize($newsize);
die qq(SetMaxBufSize($newsize) error: ), $db->Error, qq(
) if ! $rc;
¶ÇÇÑ: GetMaxBufSize
SetStmtCloseType type
ODBC °ü¸®ÀÚ¿¡ÀÇÇØ »ç¿ëµÈ ÇöÀç ODBCÀÇ ´Ý±â Çü½ÄÀ» ¼³Á¤ÇÑ´Ù. ÀÌ°ÍÀº ÁÖ·Î µð¹ö±ë¿¡ »ç¿ëµÈ´Ù. º¸Åë ½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµéÀ» ¿­°í ÁúÀÇ(¶Ç´Â ¾Æ¹«°Å³ª)¸¦ ¼öÇàÇÒ ¶§ °á°ú´Â ½ºÅ×ÀÌÆ®¸ÕÆ®¿Í ¿¬°üÀÌÀÖ´Ù. ´Ù¸¥ ÁúÀǸ¦ ¼öÇàÇϱâÀ§ÇØ ÀÌ ½ºÅ×ÀÌÆ®¸ÕÆ®¸¦ »èÁ¦(Free)ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ°ÍÀ» ÇÒ¶§ º¸Åë µ¥ÀÌŸº£À̽º(ÁúÀǷκÎÅÍ)°¡ ij½¬µÈ´Ù. ÀÌ·¯ÇÑ Ä³½¬µ¿ÀÛÀº ¼Óµµ¸é¿¡¼­ ÀÕÁ¡ÀÌÀÖÁö¸¸ µ¥ÀÌŸ º£À̽º°¡ Ä¿Áú °æ¿ì ¸Þ¸ð¸® ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Ù. º¸´Ù ÀÚ¼¼ÇÑ °ÍÀº ODBC API È£Ãâ SQLFreeStmt(hstmt, ¿É¼Ç)À» º»´Ù(ÀÌ·¯ÇÑ ¸ðµç °ÍÀº Win32::ODBC¿¡¼­ ÀÚµ¿ÀûÀ¸·Î ó¸®ÇÑ´Ù). ´Ý±â Çü½ÄÀº ´ÙÀ½Áß ÇϳªÀÌ´Ù:
  • SQL_CLOSE - ¹Ù·Î ½ºÅ×ÀÌÆ®¸ÕÆ®¸¦ ´Ý´Â´Ù(ij½¬¸¦ »ç¿ë)
  • SQL_DROP - ´Ý°í ¸ðµç °á°ú¸¦ ¹ö¸°´Ù(ij½¬¸¦ »ç¿ëÇÏÁö ¾ÊÀ½)
  • SQL_UNBIND - ´Ý°í ¿­°úÀÇ ¹ÙÀεùÀ» Á¦°ÅÇÑ´Ù(odbc.pllÀº ¿­°ú º¯¼ö¸¦ ¹ÙÀεåÇÏÁö¸øÇÑ´Ù)
  • SQL_RESET_PARAMS - ´Ý°í ¸ðµç ¹Ù¿îµå º¯¼ö¸¦ ´Ù½Ã ¼³Á¤ÇÑ´Ù(¿­¿¡´ëÇÑ Çü½Ä°ú °°Àº; SQLFreeStmt()À» º»´Ù)
¿¹:
$oldct = $db->GetStmtCloseType;
$db->SetStmtCloseType(SQL_DROP);
...
$db->SetStmtCloseType($oldct);
¶ÇÇÑ: GetStmtCloseType
ShutDown
ODBC Á¢¼ÓÀ» ´Ý°í ÀÌ°Í¿¡´ëÇÑ µ¥ÀÌŸ¸¦ Ãâ·ÂÇÑ´Ù. ÀÌ°ÍÀº ´ÜÁö µð¹ö±ë¿¡¸¸ »ç¿ëµÈ´Ù. ¿¹:
$db->Shutdown;
¶ÇÇÑ: Close
Sql stmt
SQL ¸í·É stmtÀ» ¼öÇàÇÑ´Ù. ¼º°øÇϸé undefÀ» ¸®ÅÏÇϸç, ½ÇÆÐÇϸé SQL ¿À·ù Äڵ带 ¸®ÅÏÇÑ´Ù. ¿¹:
$stmt = "SELECT * FROM foo";
$rc = $db->Sql($stmt);
die qq(SQL failed "$stmt": ), $db->Error(), qq(
) if $rc;
¶ÇÇÑ: Error
TableList
TableList qualifier, owner, name, type
Catalog¸¦ »ç¿ëÇÑ ÇöÀç ODBC °³Ã¼·ÎºÎÅÍ Å×À̺í À̸§ÀÇ ¸ñ·ÏÀ» º¹±¸ÇÑ´Ù. ¸¸¾à º¯¼ö°¡ Á¤ÀǵÇÁö ¾ÊÀ¸¸é, qualifier°ú owner´Â ""°¡ ±âº»°ªÀ̸ç, nameÀº "%"ÀÌ ±âº»°ªÀÌ°í tableÀº "'TABLE'"ÀÌ ±âº»°ªÀÌ´Ù. TableList´Â Å×À̺í¸íÀ» ¿ä¼Ò·ÎÇÏ´Â ¹è¿­À» ¸®ÅÏÇÑ´Ù. ÁÖÀÇ: ¸ðµç Çʵå¸íÀº ´ë¹®ÀÚÀÌ´Ù. ¿¹:
@tables = $db->TableList;
¶ÇÇÑ: Catalog


´ÙÀ½±Û: ÆÞ ÀÀ¿ë - Á¦ 4°­ Win32::Internet ¸ñÂ÷ (7647)1996-05-04
ÀÌÀü±Û: ÆÞ ÀÀ¿ë - Á¦ 2°­ ODBC ¸ðµâ (27966)1996-05-02
<< ÀÌÀüÆäÀÌÁö (2/3)

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



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