2

実際に queryForInt() メソッドを呼び出そうとしていますが、NULL 例外が表示されます。次のコードを使用して同じ資格情報で dB にアクセスすると:

----------------これは動作しています-----------------------

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

------ In Bean -----------------(これは動作していません)

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

---------ProductDAO クラスについて --------------(Spring メソッドを使用すると、ここで例外がスローされます)

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

ありがとう。

4

1 に答える 1

0

Spring 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.

パラメータの引数を渡しますが、最初のメソッドではなく 2 番目のメソッドを使用する理由がわかりません (パラメータを渡す必要がない場合)

編集 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);
于 2012-10-16T09:04:59.377 に答える