NullPointerException SQL

341
16 марта 2017, 20:29

Выбрасывает исключение java.lang.NullPointerException в строке stm = cn.createStatement();

public static void printTable(Connection cn){
        PreparedStatement   pstmt = null;
        Statement stm;
        ResultSet            rs    = null;
        DefaultTableModel   dtm   = null;
        try{
            stm = cn.createStatement(); //exception
            System.out.println("Успешно удалено");
        }
        catch(SQLException e){
            System.out.println("Ошибка createStatement");
            return;
        }
        try{
            stm.execute("USE mars");
        }
        catch(SQLException e){
            System.out.println("Ошибка use");
            return;
        }
        try {
            pstmt = cn.prepareStatement("SELECT id_code, type, name, manufacturer, provider, quantity FROM goods");
        dtm   = new DefaultTableModel();
        if(pstmt.execute()) {
            rs = pstmt.getResultSet(); 
            ResultSetMetaData rsmd = rs.getMetaData(); 
            for(int col = 1; col <= rsmd.getColumnCount(); col++)
                dtm.addColumn(rsmd.getColumnName(col)); 
            while (rs.next()) {
            Vector<String>  row = new Vector<String>(); //Строка таблицы
            for(int col = 1; col <= rsmd.getColumnCount(); col++) {                        
                int type = rsmd.getColumnType(col);
                switch(type) {
                    case Types.INTEGER :
                        row.add(new Integer(rs.getInt(col)).toString());
                        break;
                    case Types.VARCHAR :
                        row.add(rs.getString(col));
                        break;
                    default :
                        throw new Exception("Неподдерживаемый тип");
                }
            }                                    
            dtm.addRow(row);
        }
    }   
        }
catch (SQLException ex) {            
    System.out.println(ex.toString());

} catch (Exception e) {            
    e.printStackTrace();
}
JTable      grid = new JTable();
        grid.setModel(dtm);
JScrollPane jsp  = new JScrollPane(grid);
        Signed.frame_main.add(jsp);          
    }

Вызываю метод в другом классе, в main:

public static void main(String[] args) {
        cnctn = Main.conn(); //тут подключение к базе (подключается нормально)
        Main.printTable(cnctn); //exception
        // TODO Auto-generated method stub
        EventQueue.invokeLater(new Runnable(){
            @Override
            public void run(){
                try{
                    Signed window_reg = new Signed();
                    Signed.frame_main.setVisible(true);
                }
                catch (Exception e2){
                    e2.printStackTrace();
                }
            }
});
    }
Answer 1

А где метод conn? Возможна вутри этого метода какая та пойманный ексепшн и метод возврашшает null.

cnctn = Main.conn();
READ ALSO
Как сложить все элементы массива строк?

Как сложить все элементы массива строк?

Пишу приложение на Android StudioЧерез код по нажатию кнопки добавляются дополнительные поля к посту

319
Как запретить выделять и редактировать TableView

Как запретить выделять и редактировать TableView

Мне необходимо выделить строку в таблице и затем "заблокировать" выделение и редактирование других строк до определенного действияКак это...

342
Как обновить данные JavaFx?

Как обновить данные JavaFx?

В TableView использую ObservableList<Product> productListЧтобы изменить необходимые данные- использую объект из коллекции, но после сохранения ничего не изменяется...

570
Нет доступа к методу из JavaScript: ScriptException: TypeError: note.getTitle is not a function

Нет доступа к методу из JavaScript: ScriptException: TypeError: note.getTitle is not a function

Нашёл пример для работы с скриптами в Java здесьСоздал свой класс Note, создал экземпляр, положил его в engine, запускаю его метод getTitle и получаю...

283