[英]Connecting oracle database with jdbc
我正在嘗試一個程序來檢查下面與oracle數據庫的連接
import java.sql.*;
class OracleCon{
public static void main(String args[]){
try{
//step1 load the driver class
Class.forName("oracle.jdbc.driver.OracleDriver");
//step2 create the connection object
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","SangamOne123");
//step3 create the statement object
Statement stmt=con.createStatement();
//step4 execute query
ResultSet rs=stmt.executeQuery("select * from emp");
while(rs.next()) {
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
//step5 close the connection object
con.close();
} catch(Exception e){
System.out.println(e);
}
}
}
但是在eclipse中運行它之后,它顯示以下異常。
java.sql.SQLException:偵聽器拒絕連接,並出現以下錯誤:ORA-12505,TNS:listener當前不知道連接描述符中給出的SID
請幫助我,我是oracle數據庫的新手。
問題與oracle的SID (System Identifier)
有關,在安裝oracle或創建數據庫時會創建SID。
確保您的SID
是xe
並已配置為使用偵聽器。
還要在oracle安裝中簽出listener.ora
文件。 它看起來應該如下所示:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = default)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = BMBK)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(SID_NAME = BMBK)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 123.456.789.101)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
請注意第三行,其中SID_NAME = default
,對於您的偵聽器, SID
應該為xe
或使用此處指定的任何內容。
您的系統中可能還會有多個SID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.