当往下面的方法传递参数时,传入了java.util.Date类型,因此报错
“无效的列类型”,需要把java.util.Date转换为java.sql.Date
query("select distinct bm.n_bh BH,bm.c_mc MC,bm.n_zgbmbh PARENT,bm.n_zgjcybh,bm.n_xssx from v_ywzc_wsjcjg v,t_zzjg_bm bm where v.cbbm=bm.n_bh and v.cbdw=? and v.jarq BETWEEN ? AND ? order by bm.n_xssx",new Object[]{new Long(dwbh),date1,date2});
public List query(final String sql,final Object[] params){
return (List)getJdbcTemplate().execute(sql, new PreparedStatementCallback(){
public Object doInPreparedStatement(PreparedStatement pst) throws SQLException{
if(log.isDebugEnabled()){
log.debug(sql);
}
//pst.execute(sql);
if(params!=null && params.length>0){
for(int i=1;i<=params.length;i++){
pst.setObject(i,params[i-1]);
}
}
ResultSet rs = pst.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
List l = new ArrayList();
while(rs.next()){
Map m = new HashMap();
for(int i=1;i<=colCount;i++){
m.put(rsmd.getColumnName(i),rs.getObject(i));
}
l.add(m);
}
return l;
}
});
}
==========原因============================================
Class oracle.jdbc.driver.OraclePreparedStatement
setObject(int paramIndex,Object x) throws SQLException
Sets the value of the designated parameter with the given object. This method is like setObject above, except that it finds out the SQL type base on the given object's type.
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...
x - the object containing the input parameter value
targetSqlType - the SQL type (as defined in
java.sql.Types) to be sent to the database
Throws: SQLException
if a database access error occurs
分享到:
相关推荐
public boolean equals(Object obj) { return false;} public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return null;} public Statement createStatement() throws ...
for (int i = startRow; i ; i++) {// 循环行 // ;i的范围是xls坐标中的数字(A‘1’,C‘10’) HSSFRow row = sheet.getRow(i); if (row == null) continue; HashMap, String> dataMap = null; if (row !=...
obj.setProperty1(rs.getString("column1")); obj.setProperty2(rs.getString("column2")); obj.setProperty3(rs.getInt("column3")); dataList.add(obj); } } catch (SQLException e) { e.printStackTrace()...
在Java编程中,JDBC(Java Database Connectivity)是用于与数据库交互的标准API,它使得Java开发者能够连接到各种类型的数据库并执行SQL语句。在处理大量数据时,分页查询是一种有效的策略,可以提高应用程序的性能...
MyObject obj = new MyObject(); // 设置obj的属性... dataList.add(obj); } // 将dataList转换为JSON并设置响应 response.setContentType("application/json"); PrintWriter writer = response.getWriter(); ...
JDBC提供了一套API来处理这些数据类型,包括`setObject()`、`setBinaryStream()`和`setCharacterStream()`等方法。 - **示例代码**: ```java Blob blob = conn.createBlob(); blob.setBytes(1, bytesArray); ...
MyObject obj = new MyObject(rs.getInt("id"), rs.getString("name")); dataList.add(obj); } return dataList; } catch (SQLException e) { e.printStackTrace(); return Collections.emptyList(); } } ``...
ps.setObject(i + 1, obj[i]); } ps.executeUpdate(); } public void close() throws SQLException { if (conn != null) { conn.close(); } } } ``` - **业务分析**:对于“添加员工”这一功能来说,...
MyObject obj = (MyObject) oraConn.createStruct("MY_OBJECT", new Object[]{struct.getAttributes()[0], struct.getAttributes()[1]}); ``` 如果存储过程返回的是二维表(游标),你可以通过`ResultSet`来处理。...
pstmt.setInt(1, id); ResultSet rs = pstmt.executeQuery(); ``` 6. ResultSet:执行查询后,结果会返回一个ResultSet对象。通过遍历ResultSet,我们可以获取查询结果。 7. 关闭资源:操作完成后,记得关闭...
- `setObject(int parameterIndex, Object x)`: 自动判断参数类型并设置。 - `executeQuery()`: 执行查询语句。 - `executeUpdate()`: 执行更新语句。 - **ResultSet接口**: 用于存储查询结果。 - **常用方法**...
public int getCurrentPage(List<MyObject> dataList, int pageIndex, int pageSize) { // 假设这里已经获取到了数据列表 int start = (pageIndex - 1) * pageSize; int end = Math.min(start + pageSize, ...
cs.setInt(1, inputParam1); cs.registerOutParameter(2, OracleTypes.CURSOR); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(2); while (rs.next()) { // 处理结果集 } ``` **说明文档.txt**: 这个...
ps.setInt(2, someId); ``` 在实际应用中,可能还需要考虑性能优化,例如使用流式处理大文本数据,避免一次性加载全部内容到内存。此外,不同数据库管理系统(如MySQL、PostgreSQL、Oracle等)对Clob字段的支持和...
- 使用增强for循环,简化遍历数组的代码,例如:`for (Object obj : array) { System.out.println(obj); }` 9. **线程同步**: - `synchronized`关键字用于控制多线程对共享资源的访问,防止数据不一致。 10. **...
pstmt.setInt(1, Integer.parseInt(id)); ResultSet rs = pstmt.executeQuery(); ``` #### 2. ContentProviderURI注入 **2.2.1 详情** ContentProvider是Android四大组件之一,用于实现不同应用程序之间的数据共享...