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);以及它的工作原理。谢谢你,马努蒂!!