[英]Null Pointer Exception in JDBC SQLIte search
我已經找到了一種搜索SQLite
數據庫並顯示與傳入的字符串值匹配的行的方法。問題是我遇到了nullPointerException ,我也不知道為什么,因為據我所知,這沒有問題。 代碼如下:
public static void search(String search)
{
String [] entries = new String[6];
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:WalkerTechCars.db");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT * FROM CUSTOMERS;" );
while ( rs.next() ) {
int phone = rs.getInt("phone");
String surname = rs.getString("surname");
String firstname = rs.getString("firstname");
int home = rs.getInt("home");
String address = rs.getString("address");
String postcode = rs.getString("postcode");
if(search.matches(Integer.toString(phone)) || search.matches(surname) || search.matches(firstname) || search.matches(Integer.toString(home)) || search.matches(address) || search.matches(postcode) )
{
System.out.println( "PHONE = " + phone );
System.out.println( "SURNAME = " + surname );
System.out.println( "FIRSTNAME = " + firstname );
System.out.println( "HOME = " + home );
System.out.println( "ADDRESS = " + address );
System.out.println( "POSTCODE = " + postcode );
System.out.println();
}
}
rs.close();
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("Operation done successfully");
}
問題在於語句
if( ....... || search.matches(postcode) )
如果刪除此語句,則一切運行良好,但是此語句沒有任何問題,因為該字符串已經聲明並且不為null。
您的postcode
可能為空。
嘗試編寫如下內容:
if( ....... || (postcode != null && search.matches(postcode)) )
當然,問題可能出在每個參數上,因此您必須為每個人都做,或者以更好的方式思考。
首先嘗試檢查代碼中的搜索參數是否為null,以備將來保存,因為在所有情況下都使用search.matches。 以后可能會發生這種情況,以后您可以將搜索發送為null。 對於郵政編碼,您可以嘗試檢查null,例如(postcode!= null && search.matches(postcode))
if(search!=null)
{
if(search.matches(Integer.toString(phone)) || search.matches(surname) || search.matches(firstname) || search.matches(Integer.toString(home)) || search.matches(address) || (postcode!=null && search.matches(postcode)) )
{
System.out.println( "PHONE = " + phone );
System.out.println( "SURNAME = " + surname );
System.out.println( "FIRSTNAME = " + firstname );
System.out.println( "HOME = " + home );
System.out.println( "ADDRESS = " + address );
System.out.println( "POSTCODE = " + postcode );
System.out.println();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.