2012-10-16 74 views
2

其實我試圖調用queryForInt()方法,但它顯示NULL異常。當我使用相同憑證使用以下代碼訪問dB時:Oracle數據庫連接問題與Java Spring Bean

---------------- This is Working --------------- --------

DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver"); 
dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe"); 
dataSource.setUsername("userName"); 
dataSource.setPassword("pwd"); 

------在豆-----------------(這是不工作)

<!-- DAOS --> 
<bean id="ProductDAO" class="br.edeploy.voive.dao.ProductDAO"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 

---------在ProductDao的類--------------(例外的是在這裏拋出當我用彈簧法)

try 
{ 
    int i = getSimpleJdbcTemplate().queryForInt("Select * from ERP_PRODUCT", ""); 
} 
catch(DataAccessException dax) 
{ 
    throw new Exception("Error: "+dax.getMessage()); 
} 

謝謝。

+0

你可以添加stacktrace嗎?有一些我沒有得到:你建立你的數據源做'DriverManagerDataSource dataSource = new DriverManagerDataSource();',但是你使用'datasource'的引用將它注入到'productDAO'中。很明顯,您在第一個代碼片段中構建的數據源與您在第二個代碼片段中注入的數據源不同。但是,如果我們看到更多的配置,我們將理解。 – Alban

回答

0

春jdbcTemplate.queryForInt()支持下列參數

int queryForInt(String sql) 
      Execute a query that results in an int value, given static SQL. 

int queryForInt(String sql, Object[] args) 
      Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in an int value. 

int queryForInt(String sql, Object[] args, int[] argTypes) 
      Query given SQL to create a prepared statement from SQL and a list of arguments to bind to the query, resulting in an int value. 

您傳遞參數的參數,你爲什麼要使用第二種方法,而不是第一個方法(當你不需要傳遞參數不確定)

EDIT 使用queryForInt(方式)是:

String sql = "SELECT COUNT(*) FROM CUSTOMER"; 

int total = getJdbcTemplate().queryForInt(sql); 

看着你的代碼,看起來像你需要使用queryForObject()

String sql = "SELECT NAME FROM CUSTOMER WHERE CUST_ID = ?"; 

String name = (String)getJdbcTemplate().queryForObject(
      sql, new Object[] { custId }, String.class); 
+0

嗨,其實我早些時候嘗試過,但沒有工作。你能告訴我如何在我的Servlet類中調用[ProductDAO類名爲「GetProduct()」]的方法嗎? –

+0

編輯我的答案 – Anshu