dbStatement = con.createStatement();
dbResult = dbStatement.executeQuery("SELECT Vendor_Code FROM temp ORDER BY status ASC ");
while (dbResult.next())
{
VendorCode=dbResult.getString("Vendor_Code");
System.out.println(VendorCode);
dbStatement.executeUpdate("INSERT INTO temp1 VALUES ('"+VendorCode+"')");
}
在上面的代码中,我按照状态的升序选择供应商代码列表,如果我不添加,它可以正常工作:
dbStatement.executeUpdate("INSERT INTO temp1 VALUES ('"+VendorCode+"')");
进入while
循环。如果我添加这个,我得到的结果只是排序列表中的第一个值,并且它也被插入到temp1表中......
我在NetBeans中使用Java swing和MySQL。不知道为什么会发生这种情况?
如果我以其他方式执行上述代码,
dbStatement = con.createStatement();
dbInsert = con.createStatement();
dbResult = dbStatement.executeQuery("SELECT Vendor_Code FROM temp ORDER BY status ASC ");
while (dbResult.next())
{
VendorCode=dbResult.getString("Vendor_Code");
dbResult = dbInsert.executeQuery("SELECT Bid_No,Vendor_Name,Vendor_Address,Amount,Tax_Percentage,Amount_Aftertax,Expected_Deliverydate,Vendor_Code FROM purchase_bid where PE_Number='"+penumber+"' AND Vendor_Code='"+VendorCode+"' ");
while(dbResult.next())
{
Bid_Number=dbResult.getString("Bid_No");
vendor_name=dbResult.getString("Vendor_Name");
vendor_address=dbResult.getString("Vendor_Address");
Amount=dbResult.getString("Amount");
tax=dbResult.getString("Tax_Percentage");
date2=dbResult.getString("Expected_Deliverydate");
Amount_Aftertax=dbResult.getString("Amount_Aftertax");
venCode=dbResult.getString("Vendor_Code");
date3=date2.split("-");
String day="";
String month="";
String year="";
day=date3[2];
month=date3[1];
year=date3[0];
date=day+"-"+month+"-"+year;
addtoCart();//for displaying it in jTable
}
}
从purchase_bid表中检索值时,VendorCode不会按升序排序。然后它再次获取第一个排序值,并且jTable中不显示任何内容。
答案 0 :(得分:7)
一次只能为每个语句使用一个结果集(用于查询,更新等)。见the doc:
默认情况下,每个Statement对象只能打开一个ResultSet对象 同时
我要么:
编辑:修改后的EJP评论如下。
答案 1 :(得分:3)
您应该只将语句实例用于一个操作。因此,调用executeUpdate方法会删除executeQuery-method获取的ResultSet。
创建第二个语句,以便:
dbStatement = con.createStatement();
dbInsert = con.createStatement();
dbResult = dbStatement.executeQuery("SELECT Vendor_Code FROM temp ORDER BY status ASC ");
while (dbResult.next())
{
VendorCode=dbResult.getString("Vendor_Code");
System.out.println(VendorCode);
dbInsert.executeUpdate("INSERT INTO temp1 VALUES ('"+VendorCode+"')");
}
如果您不只是测试并且您实际上想要将Vendor_Code从temp批量插入temp1,请尝试使用INSERT ... SELECT
dbInsert = con.createStatement();
dbInsert.executeUpdate("INSERT INTO temp1 SELECT Vendor_Code FROM temp");
有关此类INSERT的更多详细信息,请参阅MySQL官方文档: http://dev.mysql.com/doc/refman/5.1/en/insert-select.html