public static Connection connect;
public static ResultSet resultSet;
static final String DATABASE_URL = "jdbc:mysql://localhost/java_dev";
public ServerFunctions() {
String Driver = "com.mysql.jdbc.Driver";
String DB_USERNAME = "lucky";
String DB_PASSWORD = "lucky";
try {
Class.forName(Driver);
connect = DriverManager.getConnection(DATABASE_URL,DB_USERNAME, DB_PASSWORD);
} catch(Exception e) {
System.out.println("Database Not Connected ! ");
}
}
public static Boolean verificator(String username, String password) {
try {
PreparedStatement prepare = connect.prepareStatement(
"Select * from users where username='?'&&password='?'");
以上是我的代碼片段。我聲明Connection
和Resultset
對象是靜態的,因此可以從靜態驗證器方法調用它們。 此外,驗證方法被聲明爲靜態的,這樣它可以通過使用className.verificator(param,param)從不同的類作爲類變量進行調用。可以在java中聲明靜態對象嗎?
它編譯和運行,當我單獨測試類,但然後我得到的PerparedStatement行時,每當有不同的類的調用時出現NullPointerException錯誤。
是否有人請幫助我爲什麼它發生?
三江源
一些註釋:如果您使用的是準備好的語句,則不需要將字符串參數括在引號中。你可以改用'Select * from username where username =? &&密碼=?'。如果你認真對待用戶驗證,那麼首先要知道你做錯了,並且有許多在線幫助參考(例如http://crackstation.net/hashing-security.htm)。另外,您不要將「對象」設置爲靜態,而是將該對象的_reference_設置爲靜態 - 對象本身的生命不管您如何引用它。 – kbolino 2012-08-03 13:23:23
讓你:)我糾正了那些東西:) thanx – 2012-09-09 13:45:49