【问题标题】:Unable to fetch sqlite record with alphanumeric values无法获取带有字母数字值的 sqlite 记录
【发布时间】:2012-09-18 04:55:04
【问题描述】:

我正在使用下面的代码在我的 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

【问题讨论】:

    标签: android sqlite map hashmap


    【解决方案1】:

    使用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);
    

    【讨论】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多