gpt4 book ai didi

mysql - 声明 bigdecimal 后更新 mysql 上的表

转载 作者:行者123 更新时间:2023-11-29 14:24:55 25 4
gpt4 key购买 nike

我在我的应用程序上进行了以下工作,其中我试图更新名为“porcobrar2012”的 mysql 数据库表上的总值。但是,唯一更新的值是 while 循环中生成的最后一个值。为什么?所有值都毫无问题地打印在屏幕上,但这些值没有在数据库中更新。这是代码:

BigDecimal total = new BigDecimal("0"); 
try
{
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Connection connection=DriverManager.getConnection("jdbc:odbc:db1","","");
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost/etoolsco_VecinetSM?user=etoolsco&password=g7Xm2heD41");
Statement statement=connection.createStatement();
String query;
query="SELECT * FROM porcobrar2012";
ResultSet resultSet=statement.executeQuery(query);
while(resultSet.next())
{
out.println(resultSet.getString(2)+"");out.println(resultSet.getBigDecimal(3)+"");out.println(resultSet.getBigDecimal(4)+"");out.println(resultSet.getBigDecimal(5)+"");out.println(resultSet.getBigDecimal(6)+"");out.println(resultSet.getBigDecimal(7)+"");out.println(resultSet.getBigDecimal(8)+"");out.println(resultSet.getBigDecimal(9)+"");out.println(resultSet.getBigDecimal(10)+"");out.println(resultSet.getBigDecimal(11)+"");out.println(resultSet.getBigDecimal(12)+"");out.println(resultSet.getBigDecimal(13)+"")out.println(resultSet.getBigDecimal(14)+"");out.println(resultSet.getBigDecimal(15)+"");
total = resultSet.getBigDecimal(3).add(resultSet.getBigDecimal(4)).add(resultSet.getBigDecimal(5)).add(resultSet.getBigDecimal(6)).add(resultSet.getBigDecimal(7)).add(resultSet.getBigDecimal(8)).add(resultSet.getBigDecimal(9)).add(resultSet.getBigDecimal(10)).add(resultSet.getBigDecimal(11)).add(resultSet.getBigDecimal(12)).add(resultSet.getBigDecimal(13)).add(resultSet.getBigDecimal(14)).add(resultSet.getBigDecimal(15));
String query1;
query1="UPDATE porcobrar2012 SET total=total";
PreparedStatement ps = connection.prepareStatement(query1);
ps.executeUpdate();

out.println(total);

}

connection.close();
statement.close();




}

catch (Exception e)
{
//e.printStackTrace();
out.println(e.toString());
}

最佳答案

这是因为更新关闭了现有结果集。但我想问为什么你不在数据库中没有任何先前查询、没有循环、没有 BigDecimals 的情况下在单个 UPDATE 语句中进行加法。数据库编程的规则之一是“不要将数据移动到超出需要的范围”。只需编写“UPDATE porcobrar2012 SET a=b+c+d+...”,效率会高很多倍。您也可以删除 Class.forName() 调用:多年来都不需要它。

关于mysql - 声明 bigdecimal 后更新 mysql 上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com