【问题标题】:Data is not inserted into the table [duplicate]数据未插入表中[重复]
【发布时间】:2021-05-01 20:33:05
【问题描述】:

我尝试使用 JDBC 将一些数据插入到我的数据库表中,但它会引发一些异常,例如--> java.lang.NullPointerException 我猜我的连接没有错误!

这是代码-->

package batch2;

public class Database {
    Connection con;
    Statement stm;
    
    Database(){
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            
            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/javabatch2", "root", "");
        } 
        catch (Exception ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        } 
    }
    
    public void addStudent(String name, String phone, String email){
        String sql= "insert into student(name, phone,email) values ('"+name+"',  '"+phone+"',    '"+email+"')";
        
        try{
            stm.execute(sql);
        }catch(Exception ex){
             System.out.println(ex);   ***//exception trows here***
        }
        
    }

}

这是我的主要课程-->

package batch2;

public class Main1 {
      public static void main(String[] args){
        Database obj = new Database();
        
        obj.addStudent("hola", "875423", "hola@gmail.com");
        System.out.println("Added into student table DONE");
    }
    
}

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:

    在Database.addStudent() 中,您使用的是stm.execute(..),但根据您提供的代码,您从未初始化stm,因此stm 是null。

    请注意,您执行System.out.println(ex) 不会打印堆栈跟踪。您可以改为 ex.printStackTrace() 或使用您的记录器记录它(就像在构造函数中一样),这样您就可以获得完整的堆栈跟踪,并且您会立即看到问题所在。

    还要注意,在您的Database 构造函数中,您捕获异常,记录它,然后什么也不做。这意味着如果那里发生了什么事,你的con 连接将是空的,事情将进一步失败。处理错误情况而不是什么都不做,让它进一步崩溃是一种很好的做法。

    【讨论】:

      猜你喜欢
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      相关资源
      最近更新 更多