java - 如何从Java传递sql命令

标签 java sql jakarta-ee setstring

我正在尝试传递一个 SQL 命令,其中必须从数据库中删除一行。 我正在使用 setString(index, value) 并调用主类中的方法。但是当我将参数传递给主类中的方法时,数据库中没有任何反应。有没有一个表单可以传递“jobnumber=”的值?在 main 方法中,它会从数据库中删除该行吗? Ps:jobnumber被声明为序列号,并且是数据库中的主键。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeleteUserDao {
    Connection conDB2 = Connect.connectDB();    
    public void deleteDb(String y) {
        String sqlDelete = ("DELETE FROM bookings WHERE jobnumber=?");      
        try {
            PreparedStatement deleter = conDB2.prepareStatement(sqlDelete);
            deleter.setString(1, y);            
            System.out.println("Item deleted from Bookings.");
        } catch (SQLException e) {
            System.out.println("Coud not delete item. " + e.getMessage());
            e.printStackTrace();
        }
    }
}

import ***.jdbc.DeleteUserDao;

public class DeleteTest {
    public static void main(String[] args) {
        DeleteUserDao del = new DeleteUserDao();        
        del.deleteDb("4");
    }
}

最佳答案

如果我理解你的问题,那么你就错过了 executeUpdate()对于声明

PreparedStatement deleter = conDB2.prepareStatement(sqlDelete);
deleter.setString(1, y);
deleter.executeUpdate(); // <-- like so

来自链接的 Javadoc,

Executes the SQL statement in this PreparedStatement object, which must be an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE; or an SQL statement that returns nothing, such as a DDL statement.

编辑

如下面的评论所述,您可能应该使用 int 类型,并且需要关闭 PreparedStatement -

public void deleteDb(int y) {
  String sqlDelete = ("DELETE FROM bookings WHERE jobnumber=?");     
  PreparedStatement deleter = null; 
  try {
    deleter = conDB2.prepareStatement(sqlDelete);
    deleter.setInt(1, y);            
    System.out.println("Item deleted from Bookings.");
  } catch (SQLException e) {
    System.out.println("Coud not delete item. " + e.getMessage());
    e.printStackTrace();
  } finally {
    if (deleter != null) {
      try {
        deleter.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
}

然后调用它,传递一个 int -

del.deleteDb(4);

关于java - 如何从Java传递sql命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245773/

相关文章:

java - 如果我想匹配不同的情况,如何使用 str.matches() ?

java - 如何在java中获取我的机器的IP地址?

java - 如何获取资源文件列表?

sql - 如何在 SQL 中聚合有序的行子集?

java - 在Java中重置时间戳的时间部分

php - 更改后查询停止工作()中的位置

jsf - 是否可以针对不同的环境覆盖 facelets.development?

java - 提取括号内的单词

java - 在层次结构的中间类中使用 Hibernate 版本控制

java - 比较两个 XML 实例的变化