数据库操作代码异常,请高手帮忙找问题所在。
这是按照老师在课堂上打的代码照打下来的,但是打完因为时间关系老师没有演示,小弟回来后自己一模一样的打了下来,不知道是老师漏了什么,运行起来却发现有Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException异常。提示的是窗口类中的ms.ExecuteSql(sql);和MySql类里面的ExecuteSql(String sql)方法里面的stm.executeUpdate(sql);麻烦帮小弟分析下这个代码。谢谢!
窗口类代码如下:
private MySql ms = new MySql();//省略部分无关代码btnSave.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String sql = "INSERT INTO student VALUES("+txtId.getText()+",'"+txtName.getText()+"');"; ms.ExecuteSql(sql); ms.closeConnection(); showStu(); } });public class MySql { private Connection conn =null; private final String DB_DRIVER="com.mysql.jdbc.Driver"; private final String DB_URL="jdbc:mysql://localhost:3306/school"; private final String DB_USER="root"; private final String DB_PWD="root"; public MySql(){} public void getConnection(){ try { Class.forName(DB_DRIVER); Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PWD); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void closeConnection(){ try { if(conn!=null){ conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public boolean ExecuteSql(String sql){ int rt=0; if(conn==null){ getConnection(); } try { Statement stm = conn.createStatement(); stm.executeUpdate(sql); //stm.close(); //不管有没有这个close都会有异常 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(rt==0){ return false; }else{ return true; } }