2012-09-26 78 views
0

我正在使用以下代碼在我的android應用中獲取sqlite記錄。此代碼提取數字值,但不提取字母數字值。例如:當「tempno」是2時,記錄被提取,但當「tempno」是2A時,它不提取記錄。無法使用字母數字值獲取sqlite記錄

我使用的所有變量都是「String」數據類型。

public Map<String, Object> getDetails(String tempno) throws SQLException{ 
    Map<String, Object> map = new HashMap<String, Object>(); 
    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {SOURCE, DESTINATION, ROUTELENGTH, NOTE}, ROUTENO + "=" + tempno, null, null, null, null, null); 

我從下面的代碼調用另一個類。

請讓我知道我要去哪裏錯了。

Map<String, Object> temp = dbAdapt.getDetails(tempno); 

下面是logcat的

錯誤
09-26 18:42:52.108: E/AndroidRuntime(2363): android.database.sqlite.SQLiteException: unrecognized token: "2A": , while compiling: SELECT DISTINCT source, destination, routelength, note FROM route WHERE routeno=2A 

回答

2

改一下這個:

public Map<String, Object> getDetails(String tempno) throws SQLException{  
    Map<String, Object> map = new HashMap<String, Object>();  
    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {SOURCE, DESTINATION, ROUTELENGTH, NOTE}, ROUTENO + "='" + tempno+"'", null, null, null, null, null); 


//ROUTENO + "='" + tempno+"'", 

這是一個快速&骯髒的解決方案,但它的工作原理。這不是將值放入sql字符串中的常用方法。

+0

由於它的工作原理 – User210282

0

使用query的參數替代,而不是你自己:

public Map<String, Object> getDetails(String tempno) throws SQLException{ 
    Map<String, Object> map = new HashMap<String, Object>(); 
    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {SOURCE, DESTINATION, ROUTELENGTH, NOTE}, ROUTENO + "= ?", new String[] { tempno }, null, null, null, null); 
+0

此代碼工作很好,謝謝。 – User210282

相關問題