2016-10-30 92 views
0

我想通過Java和Tomcat使用Oracle數據庫。 問題是我無法通過連接池和「server.xml」文件中的聲明來配置正確的連接。 所以,當我在一個Java類中使用此代碼:如何通過Java和Tomcat創建Oracle數據庫連接?

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:my","system","****"); 
String sql = "SELECT * FROM TestTable2"; 
PreparedStatement pStatement =con.prepareStatement(sql); 
ResultSet rs = pStatement.executeQuery(sql); 

,一切工作正常。 但是,當我在一個Java類中使用此代碼:

Context initContext = new 
InitialContext(); 
Context envContext = (Context)initContext.lookup("java:/comp/env"); 
DataSource datasource = (DataSource)envContext.lookup("jdbc/LocalMyDataBaseOracle"); 
Connection sqlCon = datasource.getConnection(); 

String sql = "SELECT * FROM TestTable2"; 
PreparedStatement pStatement =sqlCon.prepareStatement(sql); 

ResultSet rs = pStatement.executeQuery(sql); 

這段代碼在

<ResourceLink type="oracle.jdbc.pool.OracleDataSource" 
name="jdbc/LocalMyDataBaseOracle" 
global="jdbc/MyDataBaseOracle" 
/> 

這個代碼

<Resource driverClassName="oracle.jdbc.driver.OracleDriver" 
factory="oracle.jdbc.pool.OracleDataSourceFactory" 
name="jdbc/MyDataBaseOracle" 
username="system" 
password="****" 
type="oracle.jdbc.pool.OracleDataSource" 
url="jdbc:oracle:thin:@localhost:1521:my" 

autoReconnectForConnectionPools="true" 
autoReconnectForPools="true" 
testOnBorrow="true" 
testWhileIdle="true" 
validationQuery="select 1 from dual" 
validationInterval="34" 
/> 

我得到一個異常「值java.sql.SQLException :ORA-01017:invalid username/password; logon denied「in line Connection sqlCon = datasource.getConnection();

用戶名和密碼在第一和第二代碼中相同。請告知發生了什麼問題?

+0

1)密碼只有英文字母和數字。 2)我無法建立連接時只使用SYSTEM,然後我會改變它。 –

回答

0

我在想的唯一的事情就是你在密碼中有一些國家字符,並且由於來自Java文件和config xml的不同編碼,它會有所不同。除非它只是錯字。

Btw。你爲什麼以系統用戶身份登錄,而不是內部的東西?