SYBASEデータベースからデータを取得し、取得したデータをMySQLのテーブルにコピーしようとしています。 SYBASEのjTDSドライバとMySQLのJdbc_driverを使用して、両方のデータベースを別々に接続することができます。MySQLとSybaseデータベースへの同時JDBC接続
これで、両方のデータベースを1つのプログラムで同時に接続したいと考えています。しかし、私はClass.forName()
に書かれているべきものを混乱させました。
私はClass.forName(JDBC_DRIVER);
をMySQLに、Class.forName("net.sourceforge.jtds.jdbc.Driver");
をSYBASEに使用しました。
のSybase:
public static void main(String[] args) {
String a;
String b;
String c;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:jtds:sybase://10.159.252.29:4100/fmdb","sa","Changeme_123");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("selecttbl_alm_log_2000000000.Csn,"
+ "tbl_alm_log_2000000000.IsCleared,"
+ "tbl_alm_log_2000000000.Id"
+ "From fmdb.dbo.tbl_alm_log_2000000000"
+ "Where IsCleared = 0");
while(rs.next()) {
a = rs.getString(1);
b = rs.getString(2);
c = rs.getString(3);
System.out.println(a+" "+b+" "+c);
}
con.close();
} catch(Exception e) {
System.out.println(e);
}
}
のMySQL:
try {
Class.forName(JDBC_DRIVER);
System.out.println("connecting to database");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("connected to database successfully");
System.out.println("creating table in given database");
// stmt = conn.createStatement();
String sql = "CREATE TABLE newtable "
+ "(id INTEGER not NULL, "
+ "first VARCHAR(255), "
+ "PRIMARY KEY (id))";
stmt = conn.prepareStatement(sql);
stmt.executeUpdate(sql);
System.out.println("created table in database");
}
これらはただのスニペットです。私は上記のコードをマージしようとしています。 これが可能かどうかを教えて、これにいくつかの洞察を共有してください。
1))のResultSet
2としてリターンと方法readDBを(INT startReading、INT endReading)を作成する方法writeDBを作成する:
'Class.forNameの(...)'だけので2回だけ、それを使用し、JDBCドライバクラスのロードを強制するために使用されました。それとも、Java 6のようなほとんどのJDBCドライバでは廃止されているので、そのまま残しておきます。 –
Class.forName()を使わずにmysqlプログラムを試しましたが、適切なドライバが見つかりませんでした。これは、古いバージョンのJavaがインストールされていることを意味しますか? –
@prateekkまたは非常に古いバージョンのドライバを使用しています。 –