- ベストアンサー
PerlとWin32::ODBCを使ったDBアクセス時のエラー
- 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."
- みんなの回答 (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; --------------------------------------------------
お礼
回答ありがとうございました。コードを書き直して実行してみたいと思います。