`

关于 PreparedStatement 查询时无效的列索引

阅读更多

在使用PreparedStatement  仅对oracle数据库进行查询是在   ps.setObject(i, values[i]);总是提示无效的列索引

public List queryForBeans(final String sql, final Object... values)  {
		Connection connection = null;
		try {
			connection = super.getDataSource().getConnection();
			PreparedStatement ps = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
			if (values != null) {
				for (int i = 0; i < values.length; i++) {
					ps.setObject(i, values[i]);
				}
			}
			ResultSet rs = ps.executeQuery();
			RowSetDynaClass rsdc = new RowSetDynaClass(rs);
			rs.close();
			ps.close();
			return rsdc.getRows();

		} catch (SQLException ex) {
			throw this.getExceptionTranslator().translate("", sql, ex);
		} finally {
			this.close(connection);
		}
	}
 

后来在网上收了下原来是ps的参数是从1开始的而不是从0开始的,所有总是报无效的列索引,改为    ps.setObject(i+1, values[i]);这样就ok了。还有在网上也看到有人出现同样的问题,但不是我这样的问题,而是下标的数量与?的数量不一致,或者将?写成了?

分享到:
评论

相关推荐

    mysql优化技巧

    - **LIKE操作**:如果查询条件使用了`LIKE`操作符,且通配符位于左侧(如`'%nihao%'`),则索引无效;但如果通配符位于右侧(如`'nihao%'`),则可以使用索引。 - **OR操作**:在查询条件中使用`OR`连接时,索引...

    oralce第12讲-23讲wmv版 java操作oracle、oracle的事务、函数、数据库管理约束索引权限角色

    学习者将了解如何加载驱动、建立连接、创建Statement和PreparedStatement对象、执行SQL查询以及处理结果集。 2. **Oracle的事务**:事务是数据库操作的基本单元,它确保一组数据库操作要么全部成功,要么全部失败。...

    数据库查询之后添加到二维数组

    注意,由于ODBC SQL Server Driver的特性,我们需按照列的顺序依次获取值,否则会抛出“无效的描述符索引”异常。 最后,界面部分没有给出完整代码,但通常会涉及到数据显示在JScrollPane中的JTable或者其他的UI...

    经典的数据库查询,简单,方便,快捷

    根据提供的标题、描述、标签及部分内容,我们可以总结出以下关于“经典的数据库查询”相关的知识点。 ### 一、经典数据库查询的高效性与简洁性 #### 1.1 资源占用较少 - **背景介绍**:在数据库操作中,特别是在大...

    数据库优化

    3. **查询语句写法**:尽量使用SELECT *谨慎地选择需要的列,避免使用NOT IN和OR操作,它们可能导致索引失效。优先考虑使用EXISTS,因为它通常比IN和NOT IN更高效。 4. **数据类型优化**:合理选择数据类型可以减小...

    jdbc优化连接数据库

    当我们谈论“jdbc优化连接数据库”时,主要涉及提高数据库访问性能、减少资源消耗以及提升系统稳定性。下面将详细讨论优化MySQL数据库连接的代码和开发步骤。 1. **连接池的使用**: - 连接池是管理数据库连接的...

    Swing界面的用户信息添加、查询、删除

    本项目“Swing界面的用户信息添加、查询、删除”是关于使用Swing来设计一个用户管理系统的实例,涉及到数据库连接以及基本的数据操作。下面我们将详细探讨这些知识点。 1. **Swing组件**: - `JFrame`:作为窗口的...

    超市商品管理系统源代码.doc

    8. `JLabel`数组`CD`:在查询结果显示时用作商品信息的列标题,如“清单号”、“编号”、“名称”等。 源代码中,`actionPerformed`方法将处理用户点击按钮的事件,通过调用数据库查询方法获取数据。虽然具体查询...

    使用Type4 JDBC驱动程序编写SQLServer通用查询实例程序.pdf

    在编写数据库程序时,需要考虑如何高效地处理数据,包括事务的管理、索引的优化、性能的监控等。 6. 专业指导和参考文献:在学习和应用数据库技术时,参考专业的指导材料和文献对于掌握技术要点和最佳实践至关重要...

    Java学生信息管理系统设计(数据库版)

    - 错误处理:添加异常处理机制,确保在遇到无效输入或数据库问题时,系统能优雅地处理错误并给出反馈。 - 数据验证:在录入和修改时,检查用户输入的有效性,如学号的唯一性、日期格式等。 - 用户交互:优化界面布局...

    基于 Java 和 MySQL 实现(控制台)邮件检索功能【100012048】

    3. **性能优化**:如果邮件数据量较大,可以考虑分页显示结果,或者使用索引优化查询速度。 总之,这个项目涉及了Java编程、数据库设计、SQL查询和控制台交互等多个方面,对于初学者来说,是一个很好的练习项目,...

    性能优化的修改方法性能优化的修改方法

    - 根据索引匹配情况选择合适的查询方式,如x=?或x&lt;&gt;?。 - 大量使用PreparedStatement,减少SQL解析时间。 - 减少使用DISTINCT,它可能导致创建临时表,影响性能。 5. **SQL监控与分析** 利用PL/SQL的执行计划...

    java类似于百度的分页小程序

    需要注意的是,当数据量过大时,应考虑优化分页策略,比如使用索引、缓存等手段。 9. **参数传递**:用户在前端选择页码后,需要通过HTTP请求将参数传给服务器。这可以通过URL参数、POST请求等方式实现。 10. **...

    java分页技术参考

    Java 分页技术是Java Web开发中常用的一种技术,主要用于处理大量数据时,避免一次性加载所有数据导致内存压力和用户体验下降。以下是对Java分页技术的详细说明: 1. **初始化参数**: 在实现分页功能时,首先需要...

    java sql 学生成绩管理系统

    在实现过程中,还需要考虑系统的性能优化,比如使用预编译的PreparedStatement来防止SQL注入,通过批处理提高数据插入效率,以及利用索引加速查询等技术。 总的来说,"Java SQL Server 2008编写的课程设计大作业"是...

    数据库课程设计-报刊订阅系统-Java语言(修正版)

    在Java中,这些操作通过JDBC的PreparedStatement和ResultSet等类实现,例如插入订户信息、查询订单状态、修改报刊详情以及删除无效订单。 3. **事务处理**:在数据库操作中,事务确保了数据的一致性和完整性。例如...

    Java学生信息

    开发者可能还设计了索引以优化查询性能,同时考虑了数据的一致性和完整性,使用了约束(如NOT NULL、UNIQUE)来避免无效或重复的数据。 六、异常处理 为了保证程序的健壮性,开发者通常会使用try-catch-finally语句...

    Java 简单的成绩管理 SQL2000数据库

    6. **数据库操作**: 使用SQL语句进行数据的CRUD(Create, Read, Update, Delete)操作,例如,INSERT语句用于添加新的成绩,SELECT语句用于查询,UPDATE用于修改已有成绩,而DELETE可能用于删除无效或重复的数据。...

    java-procedure\从excle表向数据库导数据

    2. 数据预处理:在读取Excel时,对无效或异常数据进行过滤,避免在数据库操作时出现错误。 3. 错误处理:添加异常捕获和处理机制,确保程序的健壮性。 总之,这个项目展示了如何使用Java和Apache POI读取Excel数据...

    JDBC™ 4.1 SpecificationPDF

    `Statement`和`PreparedStatement`接口新增了`executeAsync()`方法,返回`java.sql.PreparedStatement$AsyncStatementResult`对象,可以异步获取执行结果。 10. **安全性增强** JDBC 4.1规范考虑了安全性方面,...

Global site tag (gtag.js) - Google Analytics