【问题标题】:I want to delete a tables row using Scanner from Java [duplicate]我想使用 Java 中的 Scanner 删除表行 [重复]
【发布时间】:2021-04-03 10:56:42
【问题描述】:

我已将我的数据库与 eclipse 连接起来,我想授予管理员权限,以从我创建的表中删除将扫描仪中的成员 ID 放入的成员

public void processDelete() {
          try {
                String url = "jdbc:mysql://localhost:3306/labdb";
                String user = "****";
                String password = "***";
                
                Connection myConn = null;
                myStmt = null;
                ResultSet myRs = null;
                Scanner keyboard=new Scanner(System.in);
                
                System.out.println("Enter the id you want to delete");
                int id=keyboard.nextInt();
                
                 int rowsAffect=myStmt.executeUpdate(
                            "delete from members " +
                            "where member_id='"+id+"' ");
            } catch (Exception exc) {
                exc.printStackTrace();
            }

我得到了这个错误

java.lang.NullPointerException
    at DeleteMembers.processDelete(DeleteMembers.java:24)
    at main.main(main.java:67)

【问题讨论】:

  • 第 24 行在哪里?
  • 在给出的代码中,你既没有初始化myConn也没有初始化myStmt
  • @RetoHöhener 第 24 行是 int rowsAffect=myStmt.executeUpdate(
  • 你还没有连接,你的myConnmyStmt都是null

标签: java mysql eclipse jdbc


【解决方案1】:

你得到java.lang.NullPointerException,因为你的ConnectionStatement都是空的。

你首先需要通过连接你的数据库来初始化连接。

使用:

Class.forName("YourDriver").newInstance();

注册您的数据库驱动程序,

myConn = DriverManager.getConnection(dbURL);

初始化你的连接

那么你应该这样做:

myStmt = myConn.createStatement()

初始化语句

毕竟您可以使用您的语句在数据库中执行查询

【讨论】:

  • Class.forName("YourDriver").newInstance(); 中的 .newInstance() 从来都不是必需的(除了 MySQL Connector/J 的某些非常老的和非常错误的版本),并且在简单的 Java 应用程序中 Class.forName("YourDriver") 不是必需的从 Java 6 开始(带有 JDBC 4 驱动程序),并且仅当驱动程序不在初始类路径上时才需要(例如,在带有 WEB-INF/lib 中的驱动程序的 Web 应用程序中)。
猜你喜欢
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 2020-03-16
  • 2023-04-08
  • 2013-03-05
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多