先看看我的代码:
public int insertObject(Object obj,HashMap cart)
{
  ItemVO ivo = (ItemVO)obj;
  System.out.println("ItemDAO insertObject");
  try
  {
    conn = DBConnect.getConnection();
    stmt = conn.createStatement();
    for(Iterator iter=cart.keySet().iterator();iter.hasNext();)
    {
        //逐条取出CartItem
        CartItem ci=(CartItem)cart.get(iter.next());
        System.out.println("userName : " + ivo.getUserName());
        System.out.println("orderTime : " + ivo.getOrderTime());
        System.out.println("foodname : "+ci.getFoodVO().getFoodName());
        System.out.println("foodAmount : " + ci.getNum());

        stmt.addBatch("insert into item values('"+ivo.getUserName()+"','"+ivo.getOrderTime()+"','"+ci.getFoodVO().getFoodName()+"',"+ci.getNum()+",'"+ivo.getDinnerTime()+"',"+ivo.getUserAmount()+",'"+ivo.getFactory()+"','"+ivo.getBao()+"','"+ivo.getDetail()+"',"+ivo.getOrderCode()+")");
        }
        Object o = new Object();
        if(obj!=null)
            synchronized(o)
        {
      ******int t[] = stmt.executeBatch();*****
           i = t.length;
        }
   }
   catch(Exception e)
   {
       e.printStackTrace();
       return i;
   }
   finally
   {
       try
       {
           if(res!=null) res.close();
           if(stmt!=null) stmt.close();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
         }
    }
    return i;
}
在执行到用*****标记的那一行时包错了.

解决方案 »

  1.   

    我知道,刚下班没时间啊!
    ItemVO ivo 是个实体类对象,对应数据库里的Item表,我要从HashMap cart里逐条取出FoodName等记录,存入Item表
    ItemVO 和Item表里的属性类型与表里的列类型对比如下:
    ItemVO 类                       Item表String userName   用户名        userName   varchar   20
    Date   orderTime  订餐时间      orderTime  datetime  8
    String foodName   菜名          foodName   varchar   30
    int    foodAmount 菜份数        foodAmount int       4
    Date   dinnerTime 就餐时间      dinnerTime datetime  8
    int    userAmount 客人数        userAmount int       4
    String factory    商家          factory    varchar   30
    String bao        是否要包间    bao        char      4
    String detail     其它要求      detail     varchar   100
    int    orderCode  定单号        orderCode  int       4
    原先在ItemVO 类 里的时间属性都是Timestamp的。我以为是Timestamp类的长度超过了数据库里的datetime  类型,就把ItemVO 类里的时间属性换成了java.util.Date。
    但仍然不行。
    请各位高手指教指教
      

  2.   

    System.out.println("userName : " + ivo.getUserName());
    System.out.println("orderTime : " + ivo.getOrderTime());
    System.out.println("foodname : "+ci.getFoodVO().getFoodName());
    System.out.println("foodAmount : " + ci.getNum());
    是我加的调试信息。是不是在下面的SQL语句有问题啊?
    stmt.addBatch("insert into item values('"+ivo.getUserName()+"','"+ivo.getOrderTime()+"','"+ci.getFoodVO().getFoodName()+"',"+ci.getNum()+",'"+ivo.getDinnerTime()+"',"+ivo.getUserAmount()+",'"+ivo.getFactory()+"','"+ivo.getBao()+"','"+ivo.getDetail()+"',"+ivo.getOrderCode()+")");
      

  3.   

    不会是date类型错误,是其他类型,你自西检查下其他String类型的字段长度是否超过了表中字段的长度。
      

  4.   

    不明白了,我是新手。
    表中字符或字符串 类型的字段最长是varchar   100 最短是char      4
    String类型是多少?刚才我用:
    stmt.executeUpdate("insert into item values('小于','2004-4-4 20:30','肉包',6,'好记肉包','散桌','无',1212)");
    这条写死的代码试了一下。就可以写入数据库了
      

  5.   

    还有一个问题:
    怎样把Date 类型的数据从
    Tue Apr 04 20:30:45 CST 2006  这样的格式转换成yyyy-mm-dd hh:mm:ss格式呢?
      

  6.   

    我厂是这样转换的:
    System.out.println("format 前 :"+new java.util.date());
    SimpleDateFormate format = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
    java.util.Date date = new java.util.Date();
    format.format(date);
    System.out.println("format 后 :"+date);
    可是转换前后都一样?
    正确的方法应该怎么作?
      

  7.   

    import java.text.*;
    import java.util.*;public class TestDate {
        public static void main(String[] args) {
            String dStr = "2001.12.12-08.23.21";
            Date d = null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd-HH.mm.ss");
            try {
                d = sdf.parse(dStr);
            } catch (ParseException pe) {
                System.out.println(pe.getMessage());
            }
            System.out.println(d);
            System.out.println(d.getTime());
        }
    }
      

  8.   

    "insert into item values('"+ivo.getUserName()+"','"+ivo.getOrderTime()+"','"+ci.getFoodVO().getFoodName()+"',"+ci.getNum()+",'"+ivo.getDinnerTime()+"',"+ivo.getUserAmount()+",'"+ivo.getFactory()+"','"+ivo.getBao()+"','"+ivo.getDetail()+"',"+ivo.getOrderCode()+")"
    你可以把这个打印出来,到数据库里执行一下,对比一下字段的长度
      

  9.   

    liujun999999(▄︻┻┳) 执行你的例子输出的还是Tue Apr 04 20:30:45 CST 2006  格式啊?
    我要输出的是 yyyy-mm-dd hh:mm:ss格式啊怎么作啊?
      

  10.   

    我是想以yyyy-MM-dd hh:mm:ss的格式存入SQLServer2000,可是查了两天资料也没找到。
    不管toLocaleString()  还是format() 输出的都是String我数据库里的时间类型为datetime
    是不是只有从数据库里检索数据时,再按yyyy-MM-dd hh:mm:ss格式显示 这样作了。
    而不能按以yyyy-MM-dd hh:mm:ss的格式存入??????
    可是我可以手工按yyyy-MM-dd hh:mm:ss格式向SQLServer2000敲入日期数据的啊?????????
      

  11.   

    我写的一段代码:
    String dateToparse = "2004-12-30 20:23:23";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date dt = new Date();
    try
    {
    dt=sdf.parse(dateToparse);
    System.out.println(sdf.parse(dateToparse));
    System.out.println(dt);
    System.out.println(sdf.format(dt));
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    输出:
    Thu Dec 30 20:23:23 CST 2004
    Thu Dec 30 20:23:23 CST 2004
    2004-12-30 08:23:23说明Date 类型的数据其本身就是Thu Dec 30 20:23:23 CST 2004 格式的,
    只有在需要是转换成yyyy-MM-dd hh:mm:ss 格式了,是这样吗?