虽然我能够使用Oracle SQLDeveloper连接和查询oracle数据库,但我无法从测试java应用程序中执行相同操作:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
//Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@myhost:1521/mysid"; //SID
//String url = "jdbc:oracle:thin:@myhost:1521:myservice"; //service
String usr = "myuser";
String pwd = "mypassword";
System.out.print("Before DriverManager...");
con = DriverManager.getConnection(url, usr, pwd);
if (con == null)
{
System.out.print("Connection is null");
}
else
{
System.out.print("Connection OK");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT count(*) FROM mytable");
while(rs.next()) {
System.out.print(rs.getInt(1));
//System.out.println(rs.getString(2));
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
一些系统细节:
操作系统:Mac OS X 10.9.4
Java版本:1.7
Eclipse :开普勒(64位)
Oracle客户端:instantclient_10_2
在一些不成功的试验之后,我决定复制SQLDeveloper使用的完全相同的JDBC驱动程序(使用show package content)。我已将它复制到我的项目文件夹/ lib下。然后我将jar添加到构建路径中。
当我在我的Mac上运行应用程序时,它在打印“在DriverManager之前......”之后仍然卡住了
如果我在同事的Windows机器上运行相同的应用程序,它可以正常工作并打印计数结果。
我真的没有选择,我开始认为我的机器java权限存在一些问题。可能吗?知道我应该找哪个地方吗?
感谢任何帮助。
此致 斯特凡诺