• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PerlとWin32::ODBCを使ってDBにアクセスするときに出るエラー)

PerlとWin32::ODBCを使ったDBアクセス時のエラー

このQ&Aのポイント
  • PerlとWin32::ODBCを使ってDBにアクセスする際に特定のエラーが発生します。
  • エラーの原因はモジュールが足りないことであり、解決方法を教えてください。
  • エラーコード:2004/08/26(11:49:14) W-SV 127.0.0.1 [80] E200042 "Can't locate object method "run" via package "Win32::ODBC=HASH(0x275020)" (perhaps you forgot to load "Win32::ODBC=HASH(0x275020)"?) at odbc.cgi line 11."

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

まず、DB接続を保存している変数名が良くないです。 $0はグローバルな特殊変数(組込み変数)でスクリプトファイル名が格納されています。これに値を代入すると、UNIXなどではプロセスの表示が変わるようです。 $0や$!の様な特殊変数は通常の変数としては使えません。 DSNへのデータ接続のインスタンスを$0では無く、通常の変数に格納して下さい。(例えば、$connection など) それから、perlでは、大文字と小文字を区別しますので、メソッド名などは大文字と小文字まで正確に記述する必要が有ります。 ですので「run("$sql")」「sql("$sql")」は「Run($sql)」「Sql($sql)」となります。 例 ----------------------------------------------- use Win32::ODBC; $DSN = "DSN=DB1;UID=kaki388"; if (!($connection = new Win32::ODBC($DSN))){ print Win32::ODBC::Error(); print "失敗"; exit(); } print "成功"; $sql = "SELECT * FROM tbl1"; $connection->Run($sql); $connection->Sql($sql); @fn = $connection->FieldNames(); while($connection->FetchRow()){ my %Data = $connection->DataHash(); print "$Data{$fn[0]}<BR>\n"; } $connection->Close; --------------------------------------------------

参考URL:
http://member.nifty.ne.jp/hippo2000/perltips/win32odbc.htm
poporikomanaka
質問者

お礼

回答ありがとうございました。コードを書き直して実行してみたいと思います。