2012-04-13 15 views
0

私は、javaアプリケーションでテスト用のmySQLデータベースに接続するためにmySQLでJDBCを使用していましたが、すべて正常に機能しました。プロダクションはoracleデータベース上に終了します。私はこの作業をするためにドライバと接続を変更することができます。JDBCとのOracle接続

私はこの与えられた:だから、私はどのようにこれがあると仮定しています-Sユーザ/パスワード@サービス@のsomething.sql /usr/local/oracle/product/10.1.0/client_1/bin/sqlplus

をローカルにアクセスされます。私は宿題も与えられた。

String url = "jdbc:oracle:thin:user/[email protected]//host/SERVICE"

Connection c = DriverManager.getConnection(url);

が、これは動作していないようです。だから私は、接続URLは次のように変換するだろうと私はこれを行うことができるだろうと思っていました。私は@ something.sql部分に混乱しています。私はどのように私の接続URLにそれを含めるでしょうか?また、現在の接続URL「jdbc:oracle:thin:user/password @ // host/SERVICE」に明らかなエラーがありますか?

+1

をこのポストをチェックアウト - http://stackoverflow.com/questions/4832056/java-jdbc-sidの代わりにoracle-using-service-name-to- – mazaneicha

+0

jdbc:oracle:thin:@host:1521:SERVICE構文を使用して、ユーザー名とパスワードは別々にありがとうございました。 –

答えて

1

最初に、sqlplusはOracleのコマンドライン・ユーティリティであり、例では値が代入されるはずの例を示しました。

「ababa」という名前のユーザーにパスワード「ゴマ」を持っていた場合は、サービスがサーバ "ボトル"の "ジニー"であるとします。コマンドラインから実行されたSQLが "SELECT * FROM wish LIMIT 3"であった場合、これは "/tmp/wishes.sql"というファイルにあります。コマンドラインから

、1は次のように入力します。

/usr/local/oracle/product/10.1.0/client_1/bin/sqlplus -S ababa/[email protected] @/tmp/wishes.sql 

Javaから、一つが呼び出します。

Connection conn = DriverManager.getConnection("jdbc:oracle:thin://bottle/genie", 
               "ababa", 
               "sesame"); 
0

私は通常、自分のコードで直接接続文字列を使用しませんが、それは大抵正しく見えます。実際の問題は、Oracleが標準ではないことです。そのため、そこには愚かな@記号があります。

また、一部のSQLも機能しないことがあります。 Oracleにはいくつかの欠点があるからです。コードを実際に運用する前に、Oracleデータベースに対してコードをテストする必要があります。

+2

「標準」JDBC URLのようなものはありません。 **はベンダー固有のものです(定義による)。 btw:MySQLにはOracleよりもはるかに奇妙な点があります(2月31日のストアが可能です) –

+0

ああ、私は生産前にテストしています。コード内で直接接続文字列を使用する代わりに、どのような方法がありますか? –

+0

JDBCのもの。 Apache dbUtils。そこには、あなたのためにJDBCの厄介さを抽象化するいくつかの他のものがあります。 –