`
dingjun1
  • 浏览: 207945 次
  • 性别: 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

分享到:
评论

相关推荐

    JDBC基础教程之PreparedStatement.doc

    JDBC基础教程之PreparedStatement.doc )

    关于PreparedStatement插入Date类型值的方法.txt

    关于PreparedStatement插入Date类型值的方法.txt

    bookstore 网上书店源码

    preparedStatement.setInt (1, id); ResultSet resultSet = preparedStatement.executeQuery (); if (resultSet.next ()) { User users = new User ( resultSet.getInt (1), resultSet.getString (2), ...

    完美的myeclipse连接mysql代码和最新驱动包JDBC

    pstmt.setObject(1, id); pstmt.setObject(2, name); pstmt.setObject(3, classname); pstmt.setObject(4, sex); pstmt.setObject(5, age); pstmt.execute(); }catch(Exception e){ ...

    bbs系统可留言

    pstmt.setObject(i+1, param[i]); } num = pstmt.executeUpdate(); } catch (SQLException ex) { throw new Exception("错误提示:请检查SQL语法是否有误"); //throw ex ; } finally{ close(connect,pstmt...

    java仓库管理

    this.preparedStatement.setInt(1, s.getSupplierId()); this.preparedStatement.setString(2, s.getSupplierName()); this.preparedStatement.setString(3, s.getSupplierAddress()); this.preparedStatement....

    7. 尚硅谷_佟刚_JDBC_PreparedStatement.wmv

    尚硅谷著名教师佟刚老师基于面对对象编程思想,对preparedStatement类一系列操作的案例。

    个人网站的素材

    1、如何将java.util.Date...2、如果要插入到数据库并且相应的字段为Date类型那么可以用PreparedStatement.setDate(int ,java.sql.Date)方法其中的java.sql.Date可以用上面的方法得到也可以用数据库提供TO_DATE函数

    java项目之学生信息管理系统

    ps.setInt(1, examVo.getClassExam()[i]); ps.setInt(2, examVo.getSid()[i]); ps.setInt(3, examVo.getC_id()); ps.executeUpdate(); } } catch (SQLException e) { e.printStackTrace(); ...

    使用PreparedStatement的setString方法会自动在varchar后面补空格

    此实例意在解决预处理命令PreparedStatement的setString()方法,在sql2008数据库中写入数据时,会自动补足空格的问题, 同时此实例也解决了当存在自动补足空格的问题时,使用nvarchar可以使查找出来的数据与原输入...

    MVC模式的实现的增删改查

    pstmt.setInt(1, id); pstmt.executeUpdate(); } public Contact getContactById(int id) throws Exception{ String sql = "select * from Contact where id=?"; Connection con = DBConnection....

    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 !=...

    BBS网站代码,jsp,java,javaScript,HTNL语言

    pst.setInt(5, user.getGender()); //返回影响的行数 ret_val =pst.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally { this.closeAll(conn, pst); } return ret_val;...

    servlet+jsp+javaBean开发的网站书店(完整源码)

    pstmt_item.setInt(5, orderItems.getBookNum()); pstmt_item.addBatch(); } pstmt_item.executeBatch(); dbUtil.getCon().commit(); } catch (SQLException e) { e.printStackTrace(); ...

    火车票管理系统

    pst.setInt(7,ticket.getCarriageNum()); pst.setInt(8,ticket.getSeatNum()); pst.setString(9,ticket.getType()); pst.setString(10,ticket.getGrade()); pst.setInt(11,ticket.getUserId()); pst.setString...

    MySql练习3:使用PreparedStatement插入宠物信息.zip

    MySql练习3:使用PreparedStatement插入宠物信息.zip MySql练习3:使用PreparedStatement插入宠物信息.zip MySql练习3:使用PreparedStatement插入宠物信息.zip

    java万能DAO

    所有业务逻辑类皆可调用该类 ... import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.Connection;... ps.setObject(i+1, param.get(i)); } } } }

    北大青鸟第二单元项目

    pstmt.setObject(i+1, args[i]); } } rs = pstmt.executeQuery(); while(rs.next()){ User user = new User(); user.setUserno(rs.getInt("USERNO")); user.setUsername(rs.getString...

    练习3:使用PreparedStatement插入宠物信息.zip

    练习3:使用PreparedStatement插入宠物信息.zip

    网上购物车 大三实验 今天刚做完

    pstm.setObject(i+1,params[i]); } pstm.execute(); }catch(SQLException e){ System.out.println("doPstm()方法出错!"); e.printStackTrace(); } } } } /** ...

Global site tag (gtag.js) - Google Analytics