2017-12-19 11 views
0

iSeriesからOracleデータベースに接続するJavaプログラムをテストしています。 接続文字列をハードコードすると、すべて正常に動作します。 パラメータとして接続文字列の詳細を渡して、Javaプログラム内で接続文字列を作成すると、ドライバエラーが発生します。 ハードコード化された接続文字列(作品)ます。..Iseries JAVAプログラム - 接続の問題

Connection conn = DriverManager.getConnection 
     ("jdbc:oracle:thin:@10.65.7.124:1521:XXXRQT","USERID", "Passwd"); 

私はIPアドレス、システム名、userIdを&パスワードを渡し、私はドライバのエラーを受け取ります。 Javaプログラムがこれです.....

import java.sql.*; 
import com.ibm.as400.access.*; 
import java.sql.Clob; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.Properties; 
import java.io.*; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.*; 
import java.lang.*; 

class TST19 
{ 
    public static void main (String[] args) throws Exception 
    {  



    String IPad=args[0]; 
    String Oserver=args[1] + '"'; 
    String UserName='"' +args[2] + '"'; 
    String Passw='"' +args[3] + '"'; 
    String ID='"' +args[4] + '"'; 
    String PortNo= ":1521:"; 
     String url1= '"' + "jdbc:oracle:thin:@"; 
     String url2= url1 + IPad + PortNo + Oserver + ',' + UserName + ',' + Passw; 





//Let's get a connection to the Oracle server 

     DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); 






    System.out.println(url1); 
     System.out.println(url2);  

     Connection conn = DriverManager.getConnection(url1 + url2); 


     System.out.println(args[0]); 
     System.out.println(args[1]); 
     System.out.println(args[2]); 
     System.out.println(args[3]); 
     System.out.println(args[4]); 

     Statement stmt = conn.createStatement(); 

    conn.close(); 

     System.out.println ("DONE!"); 
    } 

} 

私は単純に(つまりは、Doneメッセージを得る!)接続は仕事をしたい これは私が受け取るエラーです...

"jdbc:oracle:thin:@              
"jdbc:oracle:thin:@10.67.7.124:1521:XXXRQT","USERID","Passwd" 
Exception in thread "main" java.sql.SQLException: No suitable driver  
     at java.sql.DriverManager.getConnection(DriverManager.java:446) 
     at java.sql.DriverManager.getConnection(DriverManager.java:374) 
     at Phone_TST19.main(Phone_TST19.java:52)       
Java program completed with exit code 1         
+0

なぜ「ios」タグを追加しましたか? –

+0

文字列の値に二重引用符を挿入するのはなぜですか? –

+0

私はJavaプログラマーではありません。私はここからこのプログラムを手に入れました.https://www.mcpressonline.com/analytics-cognitive/db2/2110-techtip-populate-files-on-the-iseries-from-oracle-or-sql-server –

答えて

1

あなたはURL2を構築する際にまず、あなたは1回、2回、接続文字列にURL1連結されています

String url2= url1 + IPad + PortNo + Oserver + ',' + UserName + ',' + Passw; 

して、もう一度あなたが接続を取得:

Connection conn = DriverManager.getConnection(url1 + url2); 

さらに悪いことに、DriverManager.getConnection()は接続URL、ユーザー名、およびパスワードの3つのパラメータを取ります。さらに、文字列リテラルは二重引用符で囲む必要がありますが、"の場合、Stringオブジェクトの値には同じ二重引用符を使用しないでください。したがって、Stringオブジェクトも再定義する必要があります。

これを試してください:あなたが実際にデバッグに有用であることができ、いくつかの出力を持っているので、

String Driver = "jdbc:oracle:thin:@"; 
String IPad = args[0]; 
String PortNo = ":1521:"; 
String Oserver = args[1]; 
String UserName = args[2]; 
String Passw = args[3]; 
String url = Driver + IPad + PortNo + Observer; 
.... 
Connection conn = DriverManager.getConnection(url, UserName, Passw); 
+0

よく目に付きます。私はあなたが言ったようにそれを変更しましたが、同じエラーがまだ表示されます。 –

0

が最初にこれを行います。

class TST19 
{ 
    public static void main (String[] args) throws Exception{  
     System.out.println(args[0]); 
     System.out.println(args[1]); 
     System.out.println(args[2]); 
     System.out.println(args[3]); 
     System.out.println(args[4]);