0

我正在使用下面的代码在我的 android 应用程序中获取一个 sqlite 记录。此代码获取数值,但不获取字母数字值。

例如:tempno 为2 时取记录,tempno 为2A 时不取记录。

我使用的所有变量都是“字符串”数据类型。

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
4

2 回答 2

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 字符串的常用方法。

于 2012-09-26T14:26:53.943 回答
0

使用query's 参数替换而不是您自己的:

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);
于 2012-09-26T14:48:46.070 回答