【发布时间】:2017-02-21 05:55:08
【问题描述】:
我正在尝试从 SYBASE 数据库中检索数据并将检索到的数据复制到 MySQL 的表中。我可以使用 SYBASE 的 jTDS 驱动程序和 MySQL 的 Jdbc_driver 分别连接两个数据库(即)。
现在我想在一个程序中同时连接两个数据库。但是我很困惑Class.forName()应该写什么。
我在 MySQL 中使用了 Class.forName(JDBC_DRIVER);,在 SYBASE 中使用了 Class.forName("net.sourceforge.jtds.jdbc.Driver");。
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");
}
这些只是sn-ps。我只是想合并上面的代码。 通过告诉我这是否可能并分享一些对此的见解来帮助我。
【问题讨论】:
-
Class.forName(...)只是用来强制加载 JDBC 驱动类,所以使用两次即可。或者干脆把它放在一边,因为从 Java 6 开始,它对于大多数 JDBC 驱动程序来说已经过时了, -
我尝试了没有 Class.forName() 的 mysql 程序,它给出了一个错误,找不到合适的驱动程序。这是否意味着我安装了旧版本的 java?
-
@prateekk 或者您使用的是非常旧版本的驱动程序。