JSP的问题

J2EE 码拜 9年前 (2015-05-10) 814次浏览 0个评论
 

为什么,写入数据库,只能写入第一条记录??
代码:
<%@ page import=”java.sql.*,java.util.*” %>
<%@ page session=”true” %>
<html>
<head>
<title>网上书店</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″></head>
<body bgcolor=”#F4F5FF”>
<pre>
<font face=”Times New Roman,Times” size=”+3″> <font color=”#00FF00″ face=”华文彩云”><strong>网上书店欢迎您!</strong></font><font color=”#0033FF” face=”华文行楷”>您的定单已经写入数据库</font></font> 
<font color=”#0033FF” face=”华文行楷”>!</font> 
<hr><p>
<center>
<%
int customer_id;

  String cID=(String)session.getValue(“cID”);
  customer_id=Integer.parseInt(cID);
  
  Vector buyList=(Vector)session.getValue(“shoppingcart”);

try
{String  sDBDriver=”com.microsoft.jdbc.sqlserver.SQLServerDriver”;
      Class.forName(sDBDriver);

 String sConnStr=”jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Web”;
String username=”sa”;
String password=””;
Connection connWeb=DriverManager.getConnection(sConnStr,username,password);
Statement stmt=connWeb.createStatement(); 
for(int i=0;i<buyList.size();i++)
  {
  int bookid=((shop.Bookinfo)buyList.elementAt(i)).getId();
  int book_quantity=((shop.Bookinfo)buyList.elementAt(i)).getQuantity();
  String query=”insert into order_info(Customer_ID,Book_ID,Book_Quantity) values(“””+cID+”””,”””+bookid+”””,”””+book_quantity+”””)”;
     stmt.executeUpdate(query);
    

 ResultSet rs=stmt.executeQuery(“select * from order_info”);
out.println(“查看后台”)  ;
while(rs.next()){
 out.println(“order_id:”+ rs.getString(“order_id”) );  out.println(“customer_id:”+ rs.getString(“customer_id”));
 
 }
 rs.close();
 stmt.close();
     connWeb.close();
  }
}

catch(SQLException e)
{
e.getMessage();
}
session.putValue(“shoppingcart”,null);
%>
</center>
</pre>
</body>
</html>

4分
可能跟你数据库表的约束关系有关,比如你试图插入重复的元素
4分
把添加和查询 分开写
4分
鍥犱负浣犵殑鎿嶄綔鍙仛浜嗕竴娆″啓鍏?
濡傛灉鎯冲仛澶氳鍙ョ殑涓€璧峰啓鍏ラ渶瑕佸仛鎵瑰鐞嗐€傝鐢ㄤ簨鍔″鐞?
涓€鑸儏鍐典笅浣犲仛鐨勬彃鍏ョ瓑璇彞鏄嚜鍔ㄦ彁浜ょ殑銆傚厛灏嗛粯璁ょ殑鑷姩鎻愪氦鍋滀笅鏉ョ劧鍚庡皢浣犺鎻掑叆鐨勫鏉℃暟鎹坊鍔犲埌statement鐢ㄥ埌addBatch鏂规硶锛岀劧鍚庡啀鎻愪氦鏁翠釜浜嬪姟
乱码了啊。我重新发次.
如果你想要同时插入多条记录进数据库并查询你应该要先取消掉默认的自动提交.然后添加语句集合,再提交,也就是用到事务处理,做一个批处理的提交。不知道我这么说你明白没.
如果你想问的是为什么你的for循环那快:如下
  int bookid=((shop.Bookinfo)buyList.elementAt(i)).getId();
  int book_quantity=((shop.Bookinfo)buyList.elementAt(i)).getQuantity();
  String query=”insert into order_info(Customer_ID,Book_ID,Book_Quantity) values(“””+cID+”””,”””+bookid+”””,”””+book_quantity+”””)”;
     stmt.executeUpdate(query);
没有多次插入数据库.那请你跟踪你的stmt的值以查明原因.基本来说你应该一看就明白了.
另外不建议你将那么多乱七八糟的sql语句写在一个方法里面.
并且我还希望你再次检查你的代码。请问你的for循环结束到底是放在什么地方的.如果你将它放在 rs.close();
 stmt.close();
     connWeb.close();
}
后面的,也就是上面这个大括号.如果你放这里的话。你的数据库根本就在for循环里第一次的循环就关闭了.
4分
Java技术交流 QQ群:3701756   对JAVA方面有兴趣的一来交流交流吧!
4分
关注

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明JSP的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!