gpt4 book ai didi

java - 我正在尝试从数据库中减去输入文本字段的数字,但不知道该怎么做

转载 作者:行者123 更新时间:2023-12-01 09:36:35 26 4
gpt4 key购买 nike

我有一个库存系统,您可以在系统中添加商品、增加不同商品的数量、减少系统中不同商品的数量以及从系统中完全删除商品。

我想做的是,当用户在第一个文本框中输入项目名称并在第二个文本框中输入数字时,当他们按下删除键时,他们在第二个文本框中输入的数字将从中的 numberinstock 变量中删除数据库。

这是我的删除按钮代码:

 private void RemoveButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             

String url = "jdbc:derby://localhost:1527/Customers";
String username = "username";
String password = "password";

try {
Connection conn = DriverManager.getConnection(url, username, password);
if (conn != null) {
System.out.println("Connected");

String sql = "UPDATE STOCK\n"
+ "SET NUMBERINSTOCK = NUMBERINSTOCK -"+RemoveTextField1.getText()+" \n"
+ "WHERE UPPER(name)=?";

PreparedStatement statement = conn.prepareStatement(sql);

statement.setString(1, RemoveTextField1.getText());
statement.setString(2, RemoveAnItemTextField.getText().toUpperCase());

int rowsUpdated = statement.executeUpdate();

if (rowsUpdated > 0)
{
JOptionPane.showMessageDialog(null,"That item has been updated successfully");
}
else
{
JOptionPane.showMessageDialog(null,"That item is either not in the database or you have entered the wrong information");
}
}
}catch (SQLException ex)
{
JOptionPane.showMessageDialog(null,ex.getMessage());
}
ResultSet rs = null;
PreparedStatement ps = null;
try{
Connection conn = DriverManager.getConnection(url, username, password);
ps = conn.prepareStatement("select * from Stock");
rs = ps.executeQuery();

SearchTable.setModel(DbUtils.resultSetToTableModel(rs));
}catch(Exception ex){
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}

此代码的作用是连接到数据库,然后有一条更新语句,一旦按下删除按钮,该语句将更新数据库,这样当用户输入项目名称时,它就会从中删除一个项目该项目在该数据库中,但我随后意识到有人可能想一次删除多个项目。这就是我陷入困境的地方,我不确定如何在按下删除按钮后将用户在第二个文本框中输入的数字从数据库中删除

最佳答案

您的代码有很多很多问题。

首先,这是编写PreparedStatement的方式:

    String sql = "UPDATE STOCK\n"
+ "SET NUMBERINSTOCK = NUMBERINSTOCK - ? \n"
+ "WHERE UPPER(name) = ?";

PreparedStatement statement = conn.prepareStatement(sql);
int count = Integer.valueOf(RemoveTextField1.getText());
statement.setInt(1, count);
statement.setString(2, RemoveAnItemTextField.getText().toUpperCase());

我没有对RemoveTextField1进行任何错误检查,我假设它保存了项目计数。您需要检查该字段中是否输入了整数。

其次,Java中的变量名以小写字母开头。方法名称以小写字母开头。类名以大写字母开头。 JTextField 名称应为removeItemCountTextField。这是一个更具描述性的名称,使得阅读代码和调试更加容易。

第三,将您的代码和您的关注点分开。您应该拥有仅处理 GUI 的 GUI 代码、包含来自数据库和 GUI 的信息的模型代码,以及除了将数据从模型传输到数据库以及从数据库传输到模型之外不执行任何操作的数据库代码。您在代码中的多少个不同位置连接和断开数据库?答案应该是一个

关于java - 我正在尝试从数据库中减去输入文本字段的数字,但不知道该怎么做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38848190/

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