2014-02-20 54 views
1

來搜索MS Access數據庫我試圖從我的java代碼中查詢MS Access數據庫,並且我沒有運氣,我閱讀的%通配符應該可以在其他帖子中使用。如果我從代碼中排除通配符併爲searchText變量提供與記錄Description完全匹配的值,那麼LIKE運算符可以工作。以下是我嘗試過的字符串查詢,它們返回null或發生異常:無法使用LIKE與%或*

String tableName =「SSPWO」; String desc =「[Description]」;

String query = String.format("SELECT * FROM %s WHERE " + desc + " LIKE '%" searchText + "%' ORDER BY [WorkOrderNo] DESC", tableName); 

||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||

String tableName =「SSPWO」; String desc =「[Description]」;

String query = String.format("SELECT * FROM %s WHERE " + desc + " LIKE '*" searchText + "*' ORDER BY [WorkOrderNo] DESC", tableName); 

||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||

String tableName =「SSPWO」; String desc =「[Description]」;

String query = String.format("SELECT * FROM %s WHERE " + desc + " LIKE \"%" searchText + "%\" ORDER BY [WorkOrderNo] DESC", tableName); 

||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||

String tableName =「SSPWO」; String desc =「[Description]」;

String query = String.format("SELECT * FROM %s WHERE " + desc + " LIKE \'%" searchText + "%\' ORDER BY [WorkOrderNo] DESC", tableName); 

任何幫助,非常感謝。

+0

不要只說「空或異常」:郵政爲每個堆棧跟蹤失敗的案件。 (另外,您應該使用準備好的語句而不是字符串粘貼來構建查詢。) – chrylis

回答

1

百分號(%)絕對是正確的通配符在這種情況下使用。對於測試數據

ID Description       
-- ----------------------------------- 
1 I like apple pie.     
2 This is a test.      
3 Apple makes iThings.    
4 This is another test.    
5 Name of a tropical fruit: pineapple 

代碼

String tableName = "SSPWO"; 
String desc = "[Description]"; 
String searchText = "apple"; 
PreparedStatement ps = con.prepareStatement(
     String.format("SELECT * FROM %s WHERE %s LIKE ?", tableName, desc) 
     ); 
ps.setString(1, "%" + searchText + "%"); 
ResultSet rs = ps.executeQuery(); 
while (rs.next()) { 
    System.out.println(String.format("%d: %s", rs.getInt(1),rs.getString(2))); 
} 

生成以下控制檯輸出

1: I like apple pie. 
3: Apple makes iThings. 
5: Name of a tropical fruit: pineapple 
+0

謝謝。這工作。準備好的聲明絕對是要走的路。 – user3334496

1

你得反正語法錯誤的失衡:

String query = String.format([..snip...] + " LIKE '%" searchText 
                ^---missing +