Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java连接到Oracle DB java.lang.NullPointerException_Java_Oracle_Swing - Fatal编程技术网

java连接到Oracle DB java.lang.NullPointerException

java连接到Oracle DB java.lang.NullPointerException,java,oracle,swing,Java,Oracle,Swing,我的代码有以下问题 当我尝试连接并从数据库中获取数据时,我会得到一个NullPointerException。我想执行执行任务时会出现错误。据我所知,代码是正确的,但是作为sys连接到数据库的方法仍然是我不确定的 下面是: package masterdocument; import java.sql.Connection; import java.sql.DriverManager; import javax.swing.JOptionPane; import java.lang.*; imp

我的代码有以下问题

当我尝试连接并从数据库中获取数据时,我会得到一个
NullPointerException
。我想执行
执行任务时会出现错误。据我所知,代码是正确的,但是作为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有些陌生


谢谢。

您可能缺少创建
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();
   }
}

我使用了连接conn=null;OraclePreparedStatement pst=null;OracleResultSet rs=null@我已经添加了:PreparedStatement pst=conn.prepareStatement(sql);以及它的工作原理。谢谢你,马努蒂!!