先看看我的代码:
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;
}
在执行到用*****标记的那一行时包错了.
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;
}
在执行到用*****标记的那一行时包错了.
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。
但仍然不行。
请各位高手指教指教
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()+")");
表中字符或字符串 类型的字段最长是varchar 100 最短是char 4
String类型是多少?刚才我用:
stmt.executeUpdate("insert into item values('小于','2004-4-4 20:30','肉包',6,'好记肉包','散桌','无',1212)");
这条写死的代码试了一下。就可以写入数据库了
怎样把Date 类型的数据从
Tue Apr 04 20:30:45 CST 2006 这样的格式转换成yyyy-mm-dd hh:mm:ss格式呢?
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);
可是转换前后都一样?
正确的方法应该怎么作?
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());
}
}
你可以把这个打印出来,到数据库里执行一下,对比一下字段的长度
我要输出的是 yyyy-mm-dd hh:mm:ss格式啊怎么作啊?
不管toLocaleString() 还是format() 输出的都是String我数据库里的时间类型为datetime
是不是只有从数据库里检索数据时,再按yyyy-MM-dd hh:mm:ss格式显示 这样作了。
而不能按以yyyy-MM-dd hh:mm:ss的格式存入??????
可是我可以手工按yyyy-MM-dd hh:mm:ss格式向SQLServer2000敲入日期数据的啊?????????
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 格式了,是这样吗?