prepareStatement和resultSet的角标越界问题
之前一直做的android开发,数据库是sqlite,突然有需求要用到jdbc,在查询mysql数据库的时候除了一个问题,死活解决不了。报的是0<1,我当时想,0<1不是很正确吗?报这个错是闹哪样?
然后我看了下java的api,才明白sqlite的cursor拿数据和jdbc是不同的,cursor拿数据从0开始,而jdbc的prepareStatement和resultSet都是从1开始的,附上证据:
void java.sql.PreparedStatement.setObject(int parameterIndex, Object x) throwsSQLException
Sets the value of the designated parameter using the given object. The second parameter must be of type Object
; therefore, the java.lang
equivalent objects should be used for built-in types.
The JDBC specification specifies a standard mapping from Java Object
types to SQL types. The given argument will be converted to the corresponding SQL type before being sent to the database.
Note that this method may be used to pass datatabase- specific abstract data types, by using a driver-specific Java type. If the object is of a class implementing the interface SQLData
, the JDBC driver should call the method SQLData.writeSQL
to write it to the SQL data stream. If, on the other hand, the object is of a class implementing Ref
, Blob
, Clob
, NClob
, Struct
, java.net.URL
,RowId
, SQLXML
or Array
, the driver should pass it to the database as a value of the corresponding SQL type.
Note: Not all databases allow for a non-typed Null to be sent to the backend. For maximum portability, the setNull
or the setObject(int parameterIndex, Object x, int sqlType)
method should be used instead of setObject(int parameterIndex, Object x)
.
Note: This method throws an exception if there is an ambiguity, for example, if the object is of a class implementing more than one of the interfaces named above.
Parameters:parameterIndex the first parameter is 1, the second is 2, ...x the object containing the input parameter valueThrows:SQLException - if parameterIndex does not correspond to a parameter marker in the SQL statement; if a database access error occurs; this method is called on a closedPreparedStatement
or the type of the given object is ambiguous
void java.sql.PreparedStatement.setObject(int parameterIndex, Object x) throwsSQLException
Sets the value of the designated parameter using the given object. The second parameter must be of type Object
; therefore, the java.lang
equivalent objects should be used for built-in types.
The JDBC specification specifies a standard mapping from Java Object
types to SQL types. The given argument will be converted to the corresponding SQL type before being sent to the database.
Note that this method may be used to pass datatabase- specific abstract data types, by using a driver-specific Java type. If the object is of a class implementing the interface SQLData
, the JDBC driver should call the method SQLData.writeSQL
to write it to the SQL data stream. If, on the other hand, the object is of a class implementing Ref
, Blob
, Clob
, NClob
, Struct
, java.net.URL
,RowId
, SQLXML
or Array
, the driver should pass it to the database as a value of the corresponding SQL type.
Note: Not all databases allow for a non-typed Null to be sent to the backend. For maximum portability, the setNull
or the setObject(int parameterIndex, Object x, int sqlType)
method should be used instead of setObject(int parameterIndex, Object x)
.
Note: This method throws an exception if there is an ambiguity, for example, if the object is of a class implementing more than one of the interfaces named above.
Parameters:parameterIndex the first parameter is 1, the second is 2, ...x the object containing the input parameter valueThrows:SQLException - if parameterIndex does not correspond to a parameter marker in the SQL statement; if a database access error occurs; this method is called on a closedPreparedStatement
or the type of the given object is ambiguous
相关推荐
Java连接达梦数据库驱动dm_jdbc: dm_jdbc\com.dameng.floader.jar dm_jdbc\com.dameng.impexp.jar dm_jdbc\Dm7Dictionary.jar dm_jdbc\Dm7JdbcDriver14.jar dm_jdbc\Dm7JdbcDriver15.jar dm_jdbc\Dm7JdbcDriver16....
### MyBatis 报空值异常及解决办法 ...综上所述,针对 MyBatis 报空值异常的问题,可以通过在映射文件中为参数显式指定 JDBC 类型来解决。同时,还需注意其他常见的配置错误,以确保程序正常运行。
C3P0 是一个开源的 JDBC 数据源实现项目,它与 Hibernate 一起发布,实现了 JDBC3 和 JDBC2 扩展规范说明的 Connection 和 Statement 池。 ```xml <bean id="dataSource" class=...
ShardingJDBC提供了监控和管理工具,可以帮助开发者监控分片集群的状态,进行性能调优,并提供异常报警功能。 通过上述功能,ShardingJDBC为企业级应用提供了强大的数据库分片能力,是应对大数据挑战的有效工具。在...
1. 使用连接池:如C3P0、HikariCP等,预先创建并管理数据库连接,避免频繁的创建和关闭连接带来的性能开销。 2. 提供DAO(Data Access Object)层:创建专门的类来处理数据库操作,如UserDAO用于用户相关的操作,...
实际开发中,你可能还需要考虑异常处理、连接池管理等更复杂的情况,但这些基础知识足以让你开始进行数据库操作。 在提供的文件列表中,虽然没有具体的代码文件,但根据标题和描述,我们可以推断这是一个关于如何在...
这种情况下,如果应用程序代码直接尝试将 `weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB` 转换成 `oracle.sql.CLOB`,则会抛出类型转换异常。为了解决这一问题,我们需要采用一种方法来安全地实现这两种类型的相互...
3. **JDBC-ODBC Bridge驱动**:类型1 JDBC驱动,作为过渡方案使用,允许Java程序通过ODBC连接到任何数据库,包括Oracle。但这种方式效率较低,因为它依赖于两层转换(Java到ODBC再到数据库),并且需要配置ODBC数据...
此外,现有的开源连接池库,如C3P0、HikariCP、Druid等,已经提供了成熟的功能和优秀的性能,对于大多数应用来说,选择和配置这些库可能比从零开始编写连接池更为明智。 总结来说,"自定义高并发jdbc连接池"是一个...
一个是微软提供(msbase.jar mssqlserver.jar msutil.jar)另外一个是开源组织提供(jtds-1.2.4.jar),两中都可以用JDBC正常连接和使用,本人使用经验告诉我前一种和Hibernate JPA有写不兼容,经常报出异常。...
原来使用Spring Boot 1.x版本,升级2.x之后,报如下异常: ### Cause: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName. at org.mybatis.spring.MyBatisExceptionTranslator....
1.破解仅支持连续查询50次和1000行的限制; 2.修复原版jar包使用execute()和executeUpdate()方法报空指针异常的BUG。
1. **ImpalaJDBC3**:这是针对JDBC 3.0规范的驱动,适用于较旧的Java环境(如Java 1.4及更高版本)。它提供了基本的数据库连接功能,能满足大多数基本的查询和数据操作需求。 2. **ImpalaJDBC4**:这个版本遵循JDBC...
但根据给出的信息,我们可以推测文档可能主要介绍如何使用名为“A8”的DEE插件来处理异常情况,并着重说明集团管理员的操作方法。虽然具体内容不完整,但我们还是可以从中提炼出一些知识点。 首先,DEE可能是指一个...
x[0] = new Integer(0); ``` 这段代码会引发 `ArrayStoreException`,因为尝试将 `Integer` 对象存储在一个仅能容纳 `String` 类型的数组中。 **解决方法**: 1. **类型检查**: 在存储对象之前确保对象类型与数组中...
4. 异常处理:C3P0提供了丰富的异常处理机制,当连接池出现异常时,可以及时报警并进行恢复操作。 5. 集成友好:C3P0可以方便地与Spring等主流框架集成,简化数据库连接池的配置和使用。 6. 支持JNDI:C3P0可以...
8. **异常处理**:在开发过程中,良好的异常处理是必不可少的,通过try-catch-finally结构可以捕获和处理运行时可能出现的错误,保证系统的稳定运行。 9. **版本控制**:项目可能使用Git进行版本控制,便于团队协作...
在系统设计时,可能使用了Oracle的JDBC驱动程序来连接Java应用程序和数据库,通过CallableStatement或PreparedStatement等API执行SQLJ语句。同时,为了保证数据的一致性和完整性,可能会应用事务管理,确保多条SQL...
4. **事务管理**:C3P0支持JDBC的自动提交和事务管理,可以根据配置决定是否在每个连接上自动开启事务。 5. **异常处理**:C3P0提供了一套完善的异常处理机制,能够在数据库连接出现问题时及时报警,帮助开发者快速...
3. **JDBC(Java Database Connectivity)**:用于与数据库交互,系统可能使用JDBC API来执行SQL语句,如增删改查操作,管理订阅者信息和订阅记录。 4. **Swing或JavaFX**:作为图形用户界面(GUI)库,用于构建...