当前位置: 首页 > 面试题库 >

java.sql.SQLException:使用jdbcTemplate的无效列索引

许学真
2023-03-14
问题内容

我是新手JAVA。我有一个配置文件

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

  <context:component-scan base-package="org.springframework.docs.test" />
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@192.168.1.217:1521:ksoradev"/>
        <property name="username" value="pkrdm"/>
        <property name="password" value="mypass"/>
    </bean>
</beans>

然后我的代码

public class Main {
    public static void main(String args[]) throws Exception {
        ApplicationContext context = new ClassPathXmlApplicationContext("context.config.xml");
        DataSource dataSource = (DataSource) context.getBean("dataSource");
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String lastName = jdbcTemplate.queryForObject(
                "select a.firstname from TEST a",
                new Object[]{1212L}, String.class);
         System.out.println(lastName);
    }
}

当我运行它时,它返回错误无效的列索引。谁能帮我 ?

谢谢


问题答案:

您正在使用queryForObject(java.lang.String,java.lang.Object
[],java.lang.Class)
,它期望对象数组绑定到PreparedStatement具有占位符的类型查询。

您的查询可能缺少占位符,例如:

select a.firstname from TEST a where id = ?

您会收到有关无效列索引的错误,因为当前无法将数组的内容映射到任何占位符索引。



 类似资料:
  • 我升级了jboss 7到10,但有一个奇怪的错误,我不明白为什么 例外情况: 原因:java.sql.SQLException:oracle.jdbc.driver.OraclePreparedStatementWrapper.setLongInternal(OraclePreparedStatement.java:4901)处的oracle.jdbc.driver.OraclePreparedS

  • Oracle 11g、Java 8、OJDBC8/OJDBC7 使用Oracle11g尝试ojdbc7和ojdbc8,出现相同错误。 Oracle11g支持RefCursor。Java8定义了types.ref_cursor。对于11g我应该使用哪个oracle jdbc驱动程序?

  • 29.2 使用JdbcTemplate Spring的JdbcTemplate和NamedParameterJdbcTemplate类是自动配置的,您可以将它们直接@Autowire到您自己的bean中: import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.co

  • 我正在尝试从instagram api获取关于特定标记的json数据。从响应im将所有url保存到一个只有字符串url属性的自定义类映像。在instagram的每个回复中,它都有大约20个媒体文件,但我似乎无法构建我的图像列表来显示在我的回收器视图中 Response.enqueue(new Callback(){@override public void onResponse(Call Call

  • 为了使用Oracle存储过程学习Hibernate4.1,我尝试使用一个尽可能简单的示例:1。%2中没有传递参数。SYS_REFCURSOR作为一个返回参数 我得到的是一个异常:“org.hibernate.exception.GenericJDBcException:无效列索引”。在网上搜索几个小时来解决这个问题并没有什么帮助。 ================================异

  • 问题内容: 我正在尝试编写一个JTable,它从ResultSet中获取数据,并使用它来创建一个动态大小的表,该表具有来自ResultSet的适当的列名和行数据值,但是我无法获得JDBC为我动态获取列名。 我知道我的选择陈述是好的!我可以使用自己编写的ResultPrinter类轻松打印结果,但由于某种原因我似乎无法获得列名。 代码:http://pastebin.com/SSNdCkNu 输出: