【发布时间】:2014-09-19 17:11:46
【问题描述】:
我创建了一个搜索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) )
如果我删除这条语句,一切都会正常运行,但是这条语句没有任何问题,因为字符串已经被声明并且不为空。
【问题讨论】:
-
你测试过
matches参数不是null吗? -
向我们展示来自 logcat 的日志错误
标签: java string sqlite jdbc nullpointerexception