我这样写,for循环只能添加一条数据在数据库里!添加2条就报未结束的SQL语句!
-------------------------------------------------------------------
public class AddOrder { public static boolean addOrder(AddCondition condition) throws SQLException {
boolean boo = false; Connection conn = null;
Statement sta = null;
conn = DataBaseConn.getConnection();
sta = conn.createStatement(); String timeSql = "select sysdate as time from dual";
System.out.println("timeSql=============" + timeSql); ResultSet timeRes = sta.executeQuery(timeSql);
timeRes.next();
String time = timeRes.getString("time");
String addId = condition.getUserid() + time; String sql = "";
String sqla="";
sql = "insert into orders values('" + addId + "','"
+ condition.getUserid() + "',";
sql += "sysdate,'" + condition.getAddress() + "',";
sql += "'" + condition.getPhone() + "','" + condition.getZip() + "','"
+ condition.getTotalprice() + "')";
   sta.executeQuery(sql); ArrayList cartList = condition.getCartList(); for (int i = 0; i < cartList.size(); i++) {
ShoppingCart cart = (ShoppingCart) cartList.get(i); sqla += " insert into orderdetail values('" + addId + "','"
+ cart.getItemid() + "',";
sqla += "'" + cart.getItemnumber() + "','" + cart.getUnitcost()
+ "','" + cart.getTotalprice() + "')";
} System.out.println("sqla===" + sqla); if (sta.executeUpdate(sqla) > 0) {
boo = true;
} timeRes.close();
sta.close();
conn.close(); return boo; }
}

解决方案 »

  1.   

    sqla +=你在循环的开始,把这个变量清空,比如for (int i = 0; i < cartList.size(); i++) { 
    sqla ="";。
      

  2.   

    sqla += " insert into orderdetail values('" + addId + "','" 
    + cart.getItemid() + "',"; 
    sqla += "'" + cart.getItemnumber() + "','" + cart.getUnitcost() 
    + "','" + cart.getTotalprice() + "')"; 
    这是一条SQL语句!-------------------------------------------------------sqla +="";我已经在上面申明了的。
      

  3.   

    还是报这个错误!
    ===================================================================
    timeSql=============select sysdate as time from dual
    sqla=== insert into orderdetail values('xiachuanyu2008-09-18 18:00:17.0','003','1','99.0','99.0') insert into orderdetail values('xiachuanyu2008-09-18 18:00:17.0','001','1','200.0','200.0')
    2008-9-18 18:00:17 org.apache.struts.action.RequestProcessor processException
    警告: Unhandled Exception thrown: class java.sql.SQLException
    2008-9-18 18:00:17 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet action threw exception
    java.sql.SQLException: ORA-00933: SQL 命令未正确结束
      

  4.   

    把你的代码对着这个改下
    你看你打印的sql语句,2个insert,原因就是没清空sqla。
      

  5.   

    现在我的代码是这样的呀!
    ==================================================
    package com.order.form;import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;import common.DataBaseConn;
    import com.shop.form.ShoppingCart;public class AddOrder { public static boolean addOrder(AddCondition condition) throws SQLException {
    boolean boo = false; Connection conn = null;
    Statement sta = null;
    conn = DataBaseConn.getConnection();
    sta = conn.createStatement(); String timeSql = "select sysdate as time from dual";
    System.out.println("timeSql=============" + timeSql); ResultSet timeRes = sta.executeQuery(timeSql);
    timeRes.next();
    String time = timeRes.getString("time");
    String addId = condition.getUserid() + time; String sql = "";
    String sqla="";
    sql = "insert into orders values('" + addId + "','"
    + condition.getUserid() + "',";
    sql += "sysdate,'" + condition.getAddress() + "',";
    sql += "'" + condition.getPhone() + "','" + condition.getZip() + "','"
    + condition.getTotalprice() + "')";
       sta.executeQuery(sql); ArrayList cartList = condition.getCartList(); for (int i = 0; i < cartList.size(); i++) {
    sqla+="";
    ShoppingCart cart = (ShoppingCart) cartList.get(i); sqla += " insert into orderdetail values('" + addId + "','"
    + cart.getItemid() + "',";
    sqla += "'" + cart.getItemnumber() + "','" + cart.getUnitcost()
    + "','" + cart.getTotalprice() + "')";
    } System.out.println("sqla===" + sqla); if (sta.executeUpdate(sqla) > 0) {
    boo = true;
    } timeRes.close();
    sta.close();
    conn.close(); return boo; }
    }
    =================================================
    可还是不行!
      

  6.   

    sqla=""; 不是
    sqla +=""; 
    太马虎了!