[英]Can't connect to Oracle 11g via JDBC
我正在尝试将JSF应用程序连接到我的Oracle 11g数据库。 前一段时间,我有一个JSF应用程序以类似的方式将其与Derby数据库连接。 大约在同一时间,我能够通过编写的Java程序连接到Oracle 11g数据库。
我试图将代码移植到这个最近的项目中,尽管一切看起来正确,但我在代码中的连接返回null。
为了进一步解决此问题,当我尝试调试时,NetBeans似乎锁定了。 我假设它将使用运行GlassFish 4的端口,但不知何故无法得知其已被占用。
任何帮助表示赞赏; 请让我知道是否可以提供我以某种方式被忽略的更多信息。
代码片段如下:
@ManagedBean(name="OracleBean")
@RequestScoped
public class OracleBean {
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:8081:xe";
private String dbName = "test";
private String dbUsername = "Username";
private String dbPassword = "password";
private Connection connect = null;
private OracleMethods Method;
/**
* Creates a new instance of DataBean
*/
public OracleBean() {
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@localhost:8081:xe";
dbName = "Test";
dbUsername = "Username";
dbPassword = "password";
connect = null;
Method = new OracleMethods();
}
public String getColorData(String rowID, int col) {
connect = Method.getConnection(driver, url, dbName, dbUsername, dbPassword);
if (connect == null) {
return "SQL Error";
}
//结束Bean代码
public class OracleMethods extends JPanel {
private Connection connect = null;
public OracleMethods() {}
public Connection getConnection(String driver, String url, String dbName, String dbUsername, String dbPassword) {
try {
Class.forName(driver).newInstance();
connect = DriverManager.getConnection((url + dbName), dbUsername, dbPassword);
} catch (Exception lex) {
lex.printStackTrace();
}
return connect;
}
如上所述-您确定数据库在标准端口8081而不是1521上运行。 也是url中的dbname Test或XE。 如果您具有标准设置,我怀疑是xe。
假设您已将oracle驱动程序jar作为外部库,则以下内容应为您建立连接
connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "your_user", "your_password");
我认为您的错误是您将url和dbname串联在一起,并且应该仅是url,因为您是连接到实例xe而不是xeTest而不是
connect = DriverManager.getConnection((url+dbName), dbUsername, dbPassword);
采用
connect = DriverManager.getConnection((url), dbUsername, dbPassword);
经过多次测试并强行部署了几次应用程序(尽管如果没有此操作,它将显示代码更改),以下语法最终起作用:
public OracleBean()
{
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@localhost:1521:xe";
dbName = "Test";
dbUsername = "username";
dbPassword = "password";
connect = null;
Method = new OracleMethods();
}
public String getColorData(String rowID, int col)
{
connect = Method.openConnection(driver, url, dbName, dbUsername, dbPassword);
//结束bean代码
public Connection openConnection(String driver, String url, String dbName, String dbUsername, String dbPassword)
{
try
{
Class.forName(driver);
}
catch (ClassNotFoundException e)
{
System.out.println("Could not load the driver");
}
try
{
connect = DriverManager.getConnection((url), dbUsername, dbPassword);
}
catch(Exception lex)
{
lex.printStackTrace();
}
return connect;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.