你必须用setString的原因是不是你在一个循环(或是函数)里面循环一个setString?没关系,在循环里面根据类型动态调用set函数就是了。
setQueryParameter(object obj)
{
    if(obj.getClass().getName() == "String")
      setString(....);
    if(obj.getClass().getName() == "TimeStamp")
      setTimestamp(....);
}

解决方案 »

  1.   

    我现在从前台取得的数据放在字符串数组中
    在后台是没法取得他们的类型的
    首先有没有办法是setString(1,String变量)设置Date型的数据
    如果没有,我可以考虑你的方法,用ArrayList储存各种类型的变量
    然后取出来的时候判断类型,但是用这种方法我的程序改动较大
      

  2.   

    这个问题我遇到过,你的目的就是将字符串类似2002-9-17存到date中吧,那你这样试试
    setDate(java.sql.Date.valueOf(字符窜));
      

  3.   

    也不是这种情况
    我现在做的是一个公用类,可以很多程序用到他
    比如有的时候,前台有20个数据,有的时候前台有30个数据
    我不能判断什么时候应该用setDate,什么时候用setString
    所以我统一用了setString,因为其他类型都可以用setString写入,
    没有什么问题的
    就是Date类型出了问题,他提示格式不匹配,我想肯定有一种默认的
    格式我不知道,用setString也肯定行的
      

  4.   

    你在前台取数据时是否是用SimpleDateFormat来把数据格式化为字符串的?
    如:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String time = sdf.format(AblUtil.getGregorianCalendar().getTime());
    原来我没用批处理,用SQL直接写数据库没问题。
      

  5.   

    不是的,
    举个例子,我在前台输入的时候就要求这种格式2002-09-11 10:00:00
    用String mydatetime = request.getParameter("mydatetime")
    然后用ps.setString(1,mydatetime)写入oracle中的Date字段中
    这样能够实现吗
      

  6.   

    对了,楼上说的to_date('"+sDate+"','yyyy-mm-dd')
    是一个好的方法,
    但是还是没有符合我的要求
    如果能用setString(1,StringValue)写入就最好了,
    因为我运行的时候只是提示格式不符,
    我想肯定有办法的
      

  7.   

    INSERT INTO test (test_date) VALUES (TO_DATE(?,'yyyy-mm-dd'));这样可以嘛?
      

  8.   

    写个日期转换的方法
    就能用getTimestamp了
    public static Timestamp toTimestamp(String str)
          throws ParseException
       {
          try
          {
            if(str == null || "".equals(str.trim()))
                return null;
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd H:mm:ss");
            java.util.Date dd1 = df.parse(str);
             Calendar cal = Calendar.getInstance();
             cal.setTime(dd1);
             java.util.Date dt = cal.getTime();
            
             long lDtm = dt.getTime();
             return new java.sql.Timestamp( lDtm );
          }
          catch(ParseException e)
          {
            throw new ParseException("You should pass the String like this:2001-4-5 21:11:11", 1);
          }
       }将你得到的StringValue值直接转换成Timestamp类型即可。
      

  9.   

    sorry
    “就能用getTimestamp了”
    这里写错了
    更正
    “就能用setTimestamp了”