我目前正在被我的學校扔進深處,他們期待着我使用sql編程一個簡單的登錄表單。他們給了我們關於他們如何使用JDBC以及它是什麼的簡要例子,但是並沒有真正解釋如何獨立使用它。因此,我從示例中抓取了一些代碼,但我無法使其工作。我不斷收到一個NullPointerException異常,我無法弄清楚,爲什麼:(簡單的數據與MySQL的比較,nullpointerexception
這裏是連接類:
package Database;
import java.sql.*;
public class MySQLConnection {
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String DBURL = "jdbc:mysql://localhost/corendon";
public static final String DBUSER = "root";
public static final String DBPASS = "simplepass";
private ResultSet result = null;
private int affectedRows = -1;
Connection conn = null;
public void startConnection() {
try {
Class.forName(DRIVER);
DriverManager.setLoginTimeout(5);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
} catch (Exception e) {
}
}
public void closeConnection() {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
}
} catch (Exception e) {
}
conn = null;
}
public ResultSet performSelect(PreparedStatement prdstmt) throws SQLException {
result = prdstmt.executeQuery();
return result;
}
public int performUpdate(PreparedStatement prdstmt) throws SQLException {
affectedRows = prdstmt.executeUpdate();
return affectedRows;
}
public Connection getConnection() {
return conn;
}
}
這裏是我得到的例外(在不同的類)的方法:
MySQLConnection conn = new MySQLConnection();
public void compareData(int id, String pass) throws SQLException{
ResultSet rs = null;
PreparedStatement prdstmt = null;
String query = "SELECT id, password FROM users WHERE id=?, password=?";
conn.startConnection();
prdstmt = conn.getConnection().prepareStatement(query);
prdstmt.setInt(1, id);
prdstmt.setString(2, pass);
rs = conn.performSelect(prdstmt);
while (rs.next()){
String tempPass = rs.getString("password");
int tempId = rs.getInt("id");
}
if(conn != null){
conn.closeConnection();
}
}
我得到上線NullPointerException異常:
prdstmt = conn.getConnection().prepareStatement(query);
爲什麼我t拋出一個異常,但不是當我開始連接,並且我該如何解決這個問題?提前致謝。
在你的compareData方法中,變量'conn'是什麼類型的對象?它聲明瞭一個方法startConnection(),雖然'DataSource'和'Connection'對象都沒有那個 – hotforfeature
您使用的是SQL Server還是MySQL?你的問題標題說SQL Server,但你的問題的其餘部分說MySQL。 –
conn是我第一次發佈的課程的一個對象。它在MySQLConnection類的早期聲明conn = new MySQLConnection();是的,我對MySQL感到抱歉。 – Taerus