我这样写,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; }
}
-------------------------------------------------------------------
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; }
}
sqla ="";。
+ cart.getItemid() + "',";
sqla += "'" + cart.getItemnumber() + "','" + cart.getUnitcost()
+ "','" + cart.getTotalprice() + "')";
这是一条SQL语句!-------------------------------------------------------sqla +="";我已经在上面申明了的。
===================================================================
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 命令未正确结束
你看你打印的sql语句,2个insert,原因就是没清空sqla。
==================================================
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; }
}
=================================================
可还是不行!
sqla +="";
太马虎了!