我想在java應用程序中調用java存儲過程。我正在使用ORACLE數據庫和JDeveloper。異常在線程「主」java.lang.NullPointerException錯誤JDeveloper 12c
我收到錯誤「異常線程‘main’顯示java.lang.NullPointerException。我不知道我究竟是做錯了。
我有一個表‘啤酒’,我想選擇所有數據從一個存儲過程,而我召喚出的Java應用程序的
我有我與LOADJAVA加載到Oracle數據庫的java.class文件Store_A.java:
import java.sql.*;
import java.io.*;
public class Store_a {
public static void apskatit()
throws SQLException
{ String sql =
"SELECT * FROM Beer";
try { Connection conn = DriverManager.getConnection("jdbc:default:connection:");
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rset = pstmt.executeQuery();
rset.close();
pstmt.close();
}
catch (SQLException e) {System.err.println(e.getMessage());
}
}
}
然後我創建我打算在java中調用一個過程:
CREATE OR REPLACE PACKAGE Store_a AS
PROCEDURE apskatit;
END Store_a;
CREATE OR REPLACE PACKAGE BODY Store_a AS
PROCEDURE apskatit AS LANGUAGE JAVA
NAME 'Store_a.apskatit()';
END Store_a;
我有,我已經與JDeveloper 12c所產生的Java文件:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Class1 {
/**
* @param args
*/
public static void main(String[] args) throws SQLException {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//Izveidojam savienojumu
conn = DriverManager.getConnection("jdbc.oracle.thin:@localhost:1521", "SYSTEM", "asdasd");
// Izveidojam callable statement
CallableStatement stmt = conn.prepareCall("CALL Store_a.apskatit()");
ResultSet resul = stmt.executeQuery();
while (resul.next()) {
System.out.println(resul.getInt(1) + "\t" + resul.getString(2));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
當我試圖運行java文件,我得到主的‘Java這個錯誤「在線程異常’。 lang.NullPointerException在client.Class1.main(Class1.java:29)。我得到錯誤的行是
conn.close();
如何解決這個問題?
非常感謝您提前。
另一天,另一個沒有堆棧跟蹤的Java異常。您的錯誤消息會告訴您發生異常的確切類別和行號,因此如果您不想自己閱讀並找出錯誤,則需要至少複製並粘貼確切的堆棧跟蹤。 – nhgrif
對不起,忘了補充一下。錯誤client.class1.main(Class.java:29) – user3074445
我相信它是這一行 - conn.close(); – user3074445