无法使用JdbcTemplate访问数据库值

时间:2015-05-26 05:17:38

标签: java oracle spring-jdbc jdbctemplate

我试图使用JdbcTemplate将值插入Oracle DB,但它抛出以下异常:

  

无法使用JdbcTemplate访问数据库值。

这就是我尝试将值插入数据库的方式:

package com.sample.common.Dao;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class UserDao  extends JdbcDaoSupport {
    public void insert(){
        System.out.println("Tring to insert");
        String sql = "INSERT INTO SB_TBL_USER (user_id,user_password,user_name,user_email,user_mobile)"+" "
   +"VALUES ('test12', 't1est1', 't2est2', 't7est2','t7estm')";
    getJdbcTemplate().update(sql);
    }
    public static void main(String args[]){
        UserDao dao= new UserDao();
        dao.insert();
    }
}

DataSourceConfiguration.xml

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
    <property name="username" value="sbjdev" />
    <property name="password" value="sbjdev" />
</bean>
<bean id="UserDao" class="com.mPowerQuartz.common.Dao.UserDao.java">
    <property name="dataSource" ref="dataSource" />
</bean>

2 个答案:

答案 0 :(得分:0)

此异常很可能是您自己的代码引发的。

并且它很可能被抛出,因为UserDao的dataSource字段为空。

原因是您没有正确使用Spring。而不是要求Spring创建UserDao并在该Spring bean中注入DataSource,而是使用new自己创建UserDao。所以没有使用Spring上下文,Spring也没有在你的代码中扮演任何角色。

阅读Spring documentation以了解如何创建Spring应用程序上下文并从中获取bean。

答案 1 :(得分:0)

我找到了他们的答案..

1)ApplicationContext和bean未初始化,看起来像..

ApplicationContext ctx = new ClassPathXmlApplicationContext(“userconfig.xml”);     UserDao usr =(JobDetailsDao)ctx.getBean(“UDao”);

2)在配置xml中,Dao和Dao实现不是映射器。看起来像。

<bean id="UserDao" class="com.mPowerQuartz.common.DaoImpl.UserDaoImpl">
        <property name="jdbcTemplate"> <ref bean = "jdbcTemplate" ></ref> 
        </property> 
</bean>