`
dingjun1
  • 浏览: 213195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PreparedStatement.setObject(int i,Object obj) 无效的列类型

阅读更多
当往下面的方法传递参数时,传入了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

分享到:
评论

相关推荐

    java业务层框架开发ibatis(java源码)

    public boolean equals(Object obj) { return false;} public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return null;} public Statement createStatement() throws ...

    Excel POI读取封装(文件+示范代码)

    for (int i = startRow; i ; i++) {// 循环行 // ;i的范围是xls坐标中的数字(A‘1’,C‘10’) HSSFRow row = sheet.getRow(i); if (row == null) continue; HashMap, String&gt; dataMap = null; if (row !=...

    java excel导出.zip

    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面向对象分页(初步设计二之oracle)

    在Java编程中,JDBC(Java Database Connectivity)是用于与数据库交互的标准API,它使得Java开发者能够连接到各种类型的数据库并执行SQL语句。在处理大量数据时,分页查询是一种有效的策略,可以提高应用程序的性能...

    servlet,实现方法 后台分页

    MyObject obj = new MyObject(); // 设置obj的属性... dataList.add(obj); } // 将dataList转换为JSON并设置响应 response.setContentType("application/json"); PrintWriter writer = response.getWriter(); ...

    通过JDBC连接oracle数据库的十大技巧

    JDBC提供了一套API来处理这些数据类型,包括`setObject()`、`setBinaryStream()`和`setCharacterStream()`等方法。 - **示例代码**: ```java Blob blob = conn.createBlob(); blob.setBytes(1, bytesArray); ...

    Servlet连接数据库并分页显示

    MyObject obj = new MyObject(rs.getInt("id"), rs.getString("name")); dataList.add(obj); } return dataList; } catch (SQLException e) { e.printStackTrace(); return Collections.emptyList(); } } ``...

    jdbc链接SQL server和MySQL 的配置

    ps.setObject(i + 1, obj[i]); } ps.executeUpdate(); } public void close() throws SQLException { if (conn != null) { conn.close(); } } } ``` - **业务分析**:对于“添加员工”这一功能来说,...

    Java调用oracle存储过程输出自定义对象或二维表

    MyObject obj = (MyObject) oraConn.createStruct("MY_OBJECT", new Object[]{struct.getAttributes()[0], struct.getAttributes()[1]}); ``` 如果存储过程返回的是二维表(游标),你可以通过`ResultSet`来处理。...

    纯java连接数据库

    pstmt.setInt(1, id); ResultSet rs = pstmt.executeQuery(); ``` 6. ResultSet:执行查询后,结果会返回一个ResultSet对象。通过遍历ResultSet,我们可以获取查询结果。 7. 关闭资源:操作完成后,记得关闭...

    JDBC个人小结

    - `setObject(int parameterIndex, Object x)`: 自动判断参数类型并设置。 - `executeQuery()`: 执行查询语句。 - `executeUpdate()`: 执行更新语句。 - **ResultSet接口**: 用于存储查询结果。 - **常用方法**...

    java分页代码下载

    public int getCurrentPage(List&lt;MyObject&gt; dataList, int pageIndex, int pageSize) { // 假设这里已经获取到了数据列表 int start = (pageIndex - 1) * pageSize; int end = Math.min(start + pageSize, ...

    动态查询oracle加反射

    cs.setInt(1, inputParam1); cs.registerOutParameter(2, OracleTypes.CURSOR); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(2); while (rs.next()) { // 处理结果集 } ``` **说明文档.txt**: 这个...

    ActiveXObject和Clob字段的插入更新

    ps.setInt(2, someId); ``` 在实际应用中,可能还需要考虑性能优化,例如使用流式处理大文本数据,避免一次性加载全部内容到内存。此外,不同数据库管理系统(如MySQL、PostgreSQL、Oracle等)对Clob字段的支持和...

    20个常用的ava程序片段.doc

    - 使用增强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四大组件之一,用于实现不同应用程序之间的数据共享...

Global site tag (gtag.js) - Google Analytics