AS400へのphpによるJDBC接続

このQ&Aのポイント
  • AS400(System i)で動作している基幹システムのデータを照会し、PCにDownloadする処理のためのAS400へのphpによるJDBC接続について困っています。
  • WindowsServer上のphpで動作するWebアプリを使ってAS400のデータを照会し、PCにDownloadする処理を作ろうとしていますが、AS400へのアクセスができずにエラーが発生しています。
  • IBMに問い合わせてもJDBCドライバに関しては教えてもらえないため、WindowsServer上のphpでdb2関数を追加インストールする必要があるかどうか知りたいです。
回答を見る
  • ベストアンサー

AS400へのphpによるJDBC接続

AS400(System i)で動作している基幹システムを管理している者です。 WindowsServer上のphpで動作するWebアプリを使って、AS400のデータを照会し、PCにDownloadする処理を作ろうと思っているのですが、AS400へのアクセスができずに困っています。 具体的には Fatal error: Call to undefined function db2_connect() in C:\Inetpub\wwwroot\........php on line 3 というようなエラーです。 JDBCドライバはjt400.jarを同じWindowsServer上に置き、環境変数に set CLASSPATH=%CLASSPATH%;(jt400.jarの置いてあるフォルダ) と設定してあります。 あるいはWindowsServerのphpではdb2関数は何等かの方法で追加インストールする必要があるのでしょうか? IBMに問い合わせても、JDBCドライバに関しては自社製品でないせいもあり、全く教えてくれませんので、経験者の方のお知恵を拝借したくお願い致します。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

phpからJDBCドライバーは使えんぞなもし(ひょっとしたらそういうエクステンションがあるのかも知れないけど)。 phpではデータベースに対する接続はDBMSごとにエクステンションというもので管理している。 エクステンションというのは、phpのスクリプトから呼び出せる関数を増やしてくれる仕組みだ。 現在DB2エクステンションが登録されていないためにdb2_connectという関数が未定義になっている訳だ。 で、エクステンションの設定はphp.iniで行う。 参考URLを二つほど紹介しておきましょう。 http://www.php.net/manual/ja/book.ibm-db2.php http://pecl.php.net/package/ibm_db2 いっそのことIBM DB2 ODBCドライバーを入手してWindows上でODBCによる接続設定を行い、phpからはODBCブリッジを利用して接続するという方が楽かも。もちろんODBCの制限に引っ張られるけど。

hatsuzo
質問者

お礼

anmochi コメント有難うございました。 JDBCは使えないんですか... IBMのアンサーラインではJDBCドライバか、IBM DB2 Connectを使えということを言っていました。前者はIBM製品ではないので後者のほうを薦めていました。 通信の問題もエクステンションが解決してくれるのでしょうか? でもこれはプロトコルでいうと下層の話だと思いますので、このエラーは関数がphpに実装されていないというエラーのようなので、教えて頂いた拡張モジュールをインストールする必要はあるんですね。 コンパイルされたDLLが無いようなので、コンパイルするのが私にはハードルが高そうですが調べてみます。 どうも有り難うございました。

hatsuzo
質問者

補足

補足します。 JDBCではなく、ODBCドライバを使ったら、難なく接続できました。 ただし、phpのdb2関数ではなく、odbc関数を使う形になります。 拡張モジュールをインストールしなくても標準で使えました。 db2関数を使った場合とのレスポンス比較は判りませんが、取りあえず繋がるには繋がりましたのでこれで作り込んでみたいと思います。 両方ためされた方がおられましたら、情報頂けるとありがたいです。

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

> IBMのアンサーラインではJDBCドライバか、IBM DB2 Connectを使えということを言っていました。 > 前者はIBM製品ではないので後者のほうを薦めていました。 > 通信の問題もエクステンションが解決してくれるのでしょうか? ノー、通信に責任を持つのはIBM DB2 Connectの仕事。 IBM DB2エクステンションはPHPとIBM DB2 Connectの橋渡しをするだけ。 しかしながら、IBM DB2 Connectって管理ツールじゃないですか? IBM Data Server Clientというのがあればいいんじゃなかろうか。 いや、私も開発はJDBCでしかやったこと無いので正確なツール名は分からないのだが、 とにもかくにも、まずIBM DB2サーバーとIBM DB2クライアントがあって、例のエクステンションは IBM DB2クライアントの機能をPHPから直接呼び出せるようにするためのいわばラッパーなのです。 なので、まずそのWindowsサーバーにJDBCじゃないIBM DB2クライアントを入れるのが先決。 ODBCで接続できているという事は既に入っているはず(DB2 ODBCドライバーもODBCに対してDB2クライアントの機能を提供するもの)なので、誰かにエクステンションをコンパイルしてもらうだけでdb2_connect系が使えるようになるはずですよ。

hatsuzo
質問者

お礼

コメント有難うございました。 お恥ずかしいですが、コンパイルの仕方もよく判っていないので安直なODBCのほうを選びました。勉強になりました。どうも有難うございます。

関連するQ&A

  • JDBCドライバについて

    JavaからアクセスしたいのでJDBCドライバをインストール、設定しようとしたのですが、Tomcatに組み込むやり方がわかりません。このサイトを参考にしてやったのですが・・・ << db105.java >> データベース(0):JDBCドライバ JavaのプログラムからMySQLのデータベースへ接続するにはJDBCドライバが必要である。 ●JDBCドライバのダウンロードとインストール (1)Webブラウザで、http://www.mysql.com/downloads/に接続する。 ダウンロードするバージョン(MySQL Connector/J 3.0)をクリックする。 (2)http://dev.mysql.com/downloads/connector/j/3.0.htmlに切り替わる。Downloadをクリックする。 (3)ダウンロードが始まるので、保存先をデスクトップにする。ファイル(mysql-connector-java-3.0.15-ga.zip)がデスクトップに保存される。 (4)ZIP形式のファイル(mysql-connector-java-3.0.15-ga.zip)を解凍する。デスクトップ上のディレクトリ(mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga)内のファイル(mysql-connector-java-3.0.15-ga-bin.jar)にJDBCドライバが存在する。 (5)JDBCドライバを環境変数CLASSPATHに追加する。 SET CLASSPATH=%CLASSPATH%;c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar;. ただし、JDBCドライバは、 c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jarに存在する。 ●Tomcatに組み込む。 ファイル(mysql-connector-java-3.0.15-ga-bin.jar)を %CATALINA%\shared\libの下にコピーする。その後、再起動する。 2番目の黒丸の%CATALINA%\shared\libが全くみつからないです。教えてください~;;

    • ベストアンサー
    • MySQL
  • PHP5、IISで2つのサイトでPHPを有効にしたい

    php-5.2.6-Win32をWIN2003上で動かしています。WEBサーバはIIS6です。 c:\inetpub\wwwroot1 と c:\inetpub\wwwroot2 のサイトがあり両方でPHPを動作させたいのですが、 php.iniのdoc_rootをどのように設定すればいいのでしょうか? 是非宜しくお願いします。

    • ベストアンサー
    • PHP
  • サーバー上でのjdbcの認識方法

    DB接続のためのクラスを作成しローカルにてソースをコンパイルし サーバ(OSはソラリス)上のTomcatにてサブレットを実行すると java.sql.SQLException: No suitable driver とエラーが出ます。jdbcを認識していないかclasspathが間違えているとまでは, わかるのですが、これはクラスのソースをコンパイルする際にローカル上にて、jdbcのclasspathを指定してコンパイルしなければいけないのでしょうか? それともサーバーのclasspathの設定に問題があるのでしょうか? またローカル上にてjdbcを置いてコンパイルする必要があるならばどこにjdbcを置いてclasspathを指定すれよいのでしょうか? どなたか力を貸して下さい お願いします

    • ベストアンサー
    • Java
  • JNDIを利用したJDBC接続

    Tomcat6.0とDerbyを使用してWebアプリケーションを作成しています。 JavaでJNDIを使用してDBに接続しようとしているのですが、 エラーが出てしまい正しく表示されません。 エラー内容   Cannot load JDBC driver class 'org.apache.derby.jdbc.ClientDriver' ソースに String user = "study"; String pass = "studypw"; String url = "jdbc:derby://localhost:1527/study_db"; Class.forName("org.apache.derby.jdbc.ClientDriver"); conn = DriverManager.getConnection(url, user, pass); このように記述すると正しく動いてくれますが InitialContext ic = new InitialContext(); DataSource ds = (DataSource)ic.lookup("java:comp/env/stderby"); conn = ds.getConnection(); このように変更するとエラーが出てしまい DBに接続できていない模様です。 Web.xmlの<resource-ref>の追加 context.xmlの作成を行いました。 tomcat側のxmlの変更はしていません。 こちらのサイトを参考させていただきました http://d.hatena.ne.jp/uen1130/20090621/1245563877 こちらのサイトにあるjarファイルも確認済みです。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27454&forum=12&start=8 解決方法やアドバイスなど 宜しくお願い致します。

    • ベストアンサー
    • Java
  • JDBCの接続

    JAVA(Eclipse使用)でSQLServer、JDBCで接続しています。 今まで動いていたのですが、DBサーバーを自分の端末に変更するとつながらなくなりました。 エラーも「[Microsoft][SQLServer 2000 Driver for JDBC]????????????????????」 とでていてよくわかりません。 接続文字列が悪いかと思ったのですが、IDやパスワードは、今までと同じなので異なるのはサーバー名くらいです。 (ポート番号も変わらない) コンピュータ名やIPでもどちらで試してもエラーとなります。 端末名を元に変えるとつながるのですが・・・ 何かドライバとかなにか、別の設定とか必要なのでしょうか? (ちなみにポート番号ってネットワークユーティリティのTCP/IPのプロパティで確認であってますよね?)

  • JavaでのOracle接続について(JDBC)

    はじめまして。 先週よりJavaの勉強を始めていまして 先日からDB接続(Oracle)をやっているのですが、Oracleに接続することが出来ません。色々なサイトからクラスパスが通っていないというエラーのようなのですが、プログラミング経験のある友人に聞いてもさっぱり原因が分かりません。また何度もインストールをやり直して同じです。以下に環境とソースを載せておきますので、もし何か解決のヒントになるような事がありましたら教えて下さい。 ●状況 (1)コンパイルは通るがjavaコマンドで実行をすると”Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driveOracleDriver”が出てしまう。 (2)C:\oracle\ora92\jdbc\lib\ojdbc14.jarを環境変数→Pathへしっかりと通してあります。(setコマンドでも確認済みです) (3)C:\j2sdk1.4.1_02\jre\lib\extへojdbc14.jarをコピー (4)SQL PLUSからは接続出来る。 ●環境 クライアント:Win2000 DBサーバー:SQLサーバー(別マシンに環境構築) DB:Oralce9.2.0 JDK:1.4.1_02 import java.sql.*; class Employee { public static void main (String args []) throws SQLException,ClassNotFoundException { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@ホスト名:1521:SID", "ID", "パスワード"); Statement stmt = conn.createStatement (); ResultSet rset = stmt.executeQuery ("SQL"); while (rset.next ()) System.out.println (rset.getString ("ISBN")); rset.close(); conn.close(); } } 以上です。何か足りない情報がありましたら教えて下さい。

  • JDBCについて

    JDBCを用いたMySQLデータベースへの接続方法について質問があります。 【現在の状況】 tomcatをインストール済み(正常に作動・・・起動した状態で、http://localhost:8080/に接続できます。) MySQLをインストール済み(正常に作動・・・データベースを作成できます。(例えば、sampleとします。)) JDBCドライバをセットアップ済み(CLASSPATHの設定も問題ありません。) しかし 作成したデータをjavaプログラムを用いて表示しようとしたところ com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'sample' というエラーが出てしまいました。 データベースへのアクセスが拒否されたとあるのですが 理由がわからずに困っております。 接続は、以下のようにしています。 Class.forName("com.mysql.jdbc.Driver"); Connection cn = DriverManager.getConnection("jdbc:mysql:///cardb", "", ""); 解決策をご存知の方いらっしゃいましたら 御指導願います。

    • ベストアンサー
    • Java
  • Webシステムをローカルで再現したい(PHP+MySQL、PEAR)

    とある必要性があって、外注で作ったWebシステム(PHP+MySQL) (システム概要:SSLあり (1) ID認証→(2) ログイン→(3) 情報登録のような流れ) を、自分のローカル環境で再現しようとPHPファイルをそのままのディレクトリ構成で ローカルにコピーしてみたのですが、ID、Passをsubmitすると次のエラーとなります。 Warning: db_Connect(DB.php) [function.db-Connect]: failed to open stream: No such file or directory in C:\Inetpub\wwwroot\SDBConnect.php on line 42 Fatal error: db_Connect() [function.require]: Failed opening required 'DB.php' (include_path='.;c:/php/includes;c:/php/pear') in C:\Inetpub\wwwroot\SDBConnect.php on line 42 引っかかっている SDBConnect.php の42行目を確認してみると、 DB接続、PEARというものを使っているみたいです。 (なお、エラーにあるDB.phpなるファイルも、サーバーにはみつからないです) Webで調べたところ、まったく同じ症状でコケた事例をみかけたのですが、 http://mugon.dip.jp/mt/archives/200507/200507102141.php ここに書かれている: 「やったこと  rootでDBをインストール   #pear install DB」 ・・というメモの意味がさっぱりわかりません。 具体的になにをすればよいのでしょうか? ■ 稼動しているシステムの環境: レンタルサーバー Apache (バージョンわかりません) PHP 4.3.10 MySQL 4.0.25 ■ 再現したいわたしのローカル環境 IIS 5.1 (XP SP2) PHP 5.0.4 Win MySQL mysql 4.0.14b Win  #DBのテーブルレイアウトなどはきちんと移行できていると思っています。 ■わたしの知識レベル: HTMLタグ打ち、初歩的なSQLを理解できる程度、PHP他プログラミング知識なし

    • ベストアンサー
    • PHP
  • JAVAのJDBCについて平易に教えてください

    IT勉強超初心者です。教科書に JDBCは javaプログラムからリレーショナルデータベースにアクセスするための API(外部の別のプログラムから呼び出してソフトの機能などを利用するためのしくみ)である。SQL言語による命令を発行してDBの操作を行えるとあるのですが 素人には 大変イメージがわきにくい説明です。 実際開発弁場でこのJDBCというのは 頻繁に使われているものなのでしょうか。また一般常識なのでしょうか。たとえば 大きな会社の基幹システムの開発などでもこのJDBCは使われるのでしょうか。 どのような場合によく使われるのでしょうか。  やさしくおしえていただけますと幸いです。

    • ベストアンサー
    • Java
  • AS400のシステムは仮想化できますか?

    かなり久しぶりの質問になります。 現在、会社でwindowsServer系の情報系システムとIBM Power720の基幹システムが動いています。 Windows系についてはそのうち仮想化+クラウドの方向に進むでしょうが、IBM系については そのまま単体サーバで運用すべきなのかがわからず、途方に暮れている状態です。 具体提案・構築については業者に任せるとして、以下のことをご存じの方があれば ご教授いただけないでしょうか。 1.WindowsServer2012の仮想化Hyper-VにAS/400のシステムは動くでしょうか。  また、その逆のIBM Power720のシステムにWindowsServer2008は動作させることは可能でしょうか。 2.上記のような仮想化サーバを導入しようとした場合におすすめのシステムはありますか。 宜しくお願い申し上げます。