2015-05-24 3 views
0

У меня проблема с кодом ниже.java подключение к Oracle DB java.lang.NullPointerException

Я получаю NullPointerException, когда пытаюсь подключиться и получать данные из базы данных. Я получаю ошибку, когда выполняется executeQuery. Насколько я знаю, код верен, но способ подключения к базе данных как sys по-прежнему я не уверен.

здесь идет:

package masterdocument; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import javax.swing.JOptionPane; 
import java.lang.*; 
import oracle.jdbc.driver.*; 
public class JavaConnectDB { 
public static Connection ConnecrDB(){ 
try{ 
    String driverName = "oracle.jdbc.driver.OracleDriver"; 
    Class.forName(driverName).newInstance(); 
    String nameForConnect = "sys as sysdba"; 
    String pass = "Abcd1234"; 
    String url = "jdbc:oracle:thin:@localhost:1521:db01"; 
    Connection conn = DriverManager.getConnection(url, nameForConnect, pass); 
    System.out.println(conn); 
    return conn; 
    } 
catch (Exception e){ 
    JOptionPane.showMessageDialog(null,e); 
    return null; 
    }  
} 
} 

и призыв к соединению выше:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)   {           

conn = JavaConnectDB.ConnecrDB(); 
     try{ 
      String sql="select * from TUTILIZADORES where USERNAME=? and PASSWORD=?"; 
     pst.setString(1, USERNAME.getText()); 
     pst.setString(2, PASSWORD.getText()); 
     rs=(OracleResultSet)pst.executeQuery(); 
     if (rs.next()){ 
     JOptionPane.showMessageDialog(null, "O username e password estavam bem"); 

     Tutilizadores c = new Tutilizadores(); 
     c.setVisible(true); 
     } 
     else{ 
     JOptionPane.showMessageDialog(null, "Login Inválido"); 
     } 

    } catch(Exception e){ 
         JOptionPane.showMessageDialog(null,e); 
         }  
}  

Я несколько новых для Java.

спасибо.

ответ

0

Вы, вероятно, отсутствует часть, которая создает PreparedStatement:

String sql="select * from TUTILIZADORES where USERNAME=? and PASSWORD=?"; 
pst = conn.prepareStatement(sql); 

Вы также должны убедиться, чтобы закрыть это заявление и ResultSet после окончания с их помощью. Вы можете сделать это в блоке finally:

} catch(Exception e) { 
    JOptionPane.showMessageDialog(null ,e); 
} finally { 
    if(rs != null) { 
     rs.close(); 
    } 
    if(pst != null) { 
     pst.close(); 
    } 
} 
+0

Я использовал Connection conn = null; OraclePreparedStatement pst = null; OracleResultSet rs = null; – AlexG

+0

@AlexG См. Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it. – manouti

+0

Я добавил: PreparedStatement pst = conn.prepareStatement (sql); и его работа. Спасибо Манути! – AlexG