【问题标题】:Oracle DB Connectivity issue with Java Spring BeanJava Spring Bean 的 Oracle DB 连接问题
【发布时间】:2012-10-16 08:53:06
【问题描述】:

实际上我正在尝试调用 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");

----- 在 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());
}

谢谢。

【问题讨论】:

  • 你能添加堆栈跟踪吗?有一些我没有得到的东西:你构建你的数据源做DriverManagerDataSource dataSource = new DriverManagerDataSource();,但是你使用datasource的引用将它注入你的productDAO。很明显,您在第一个 sn-p 中构建的数据源与您在第二个 sn-p 中注入的实例不同。但也许如果我们看到更多你的配置,我们就会明白。

标签: java spring connection oracle11g


【解决方案1】:

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.

您为参数传递参数,不知道为什么使用第二种方法而不是第一种方法(当您不需要传递参数时)

编辑 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);

【讨论】:

  • 您好,其实我之前尝试过,但没有成功。你能告诉我如何在我的 Servlet 类中调用这个方法 [of ProductDAO 类名为“GetProduct()”]?
猜你喜欢
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
相关资源
最近更新 更多