我正在使用Oracle數據庫的Java項目。當我創建一個新的Oracle驅動程序:當JDBC驅動程序無效時該怎麼辦?
jdbcDriver driver = new jdbcDriver();
...我檢查一下,看它是否使用有效:
if (!driver.isValid())
{
throw new UncheckedSqlException("jdbcDriver not valid");
}
什麼是正確的程序,如果司機是無效的?也就是說,由於數據庫不可用,因此無法存儲數據並在以後異步重試(即不鎖定應用程序)。假設如果我只是重試幾次,我會得到一個有效的驅動程序?
UPDATE
感謝EJP爲正確指出jdbcDriver是在我的代碼的類。這是正確的 - 它是我正在處理的代碼庫中的一個類。 EJP要求公佈相關細節。他們來了。
package us.mydev.jdbc.util;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import org.apache.log4j.Logger;
import us.mydev.data.exception.UncheckedSqlException;
public class jdbcDriver
{
[.....]
public jdbcDriver()
{
try
{
m_iActiveConnections++;
if (showLogMessages)
{
log.debug("jdbcDriver() created, hashcode = " + this.hashCode()
+ ",Active Connection Count is " + m_iActiveConnections);
log.debug("Data Source is " + DS_STANDARDUSER);
}
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(DS_STANDARDUSER);
mydevGetJDBCConn getConn = new sqlConn(ds);
m_conn = getConn.getConnection();
m_iDatabaseType = getConn.getDBType();
}
catch (NamingException _exp)
{ // handle any errors
log.error("failed", _exp);
}
}
public boolean isValid() throws SQLException
{
return m_conn != null && m_conn.isValid(10);
}
[.....]
}
我發現這個代碼後:
jdbcDriver driver = new jdbcDriver();
boolean driverIsValid = driver.isValid();
... driverIsValid是false
約一次在每1000個左右的數據庫訪問。我會想象這是我當前開發系統的一個工件 - 我讓Oracle在虛擬機上運行。
driverIsValid
在這種情況下生產中是否會出現異常(或聽不到)?如果它不是聞所未聞的 - 它通常如何處理,因爲我無法將相關數據保存到數據庫 - 也就是說,我可以重試幾次數據庫連接,並期望得到一個?
更新#2
基於我所來自的響應瞭解到,我需要不使用從代碼庫我的工作定義的對象代碼來問這個問題。我會接受羅文彬提供的答案,並更恰當地重提問題。
是什麼'jdbcDriver'? – Ravi
什麼是'jdbcDriver'?你的意思是[java.sql.Driver](https://docs.oracle.com/javase/7/docs/api/java/sql/Driver.html)接口? – krokodilko
如果你想訪問JDBC級別的數據庫(而不是像JPA,SpringData等更高級別的抽象),那麼也許你應該從這樣的事情開始:https://www.mkyong.com/jdbc/connect -to-oracle-db-via-jdbc-driver-java/ – riskop