clcurie_11 2013-04-23 06:53 采纳率: 6.7%
浏览 2229

在数据库中省略符号和选择数据时程序崩溃

我从 sqlite 数据库中选择数据。问题是当数据库中有省略符号,比如 " I' m John " ,当我选择数据时,程序就崩溃。
当程序中没有省略符号,一切都运行正常。
选择数据的函数:

String query = "SELECT * FROM " + mainCollumn  + " WHERE used=0 " + " AND season <= " + seasons + " ORDER BY RANDOM() LIMIT " + count ;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(query, null);

    if(cursor.moveToFirst()){
        do {
            Question question = new Question(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4),cursor.getString(5),
                    Integer.parseInt(cursor.getString(6)));

            questionList.add(question);
        }while(cursor.moveToNext());
    }
  • 写回答

2条回答 默认 最新

  • myq_26 2013-04-23 08:31
    关注

    你可以用双倍的省略符号代替省略号,但是最好的方法是使用 query() 的 selectionArgs 代替 rawQuery()。

    SQLiteDatabase db = this.getReadableDatabase();
    String[] columns = new String[] {column1, column2}; // the columns you want
    Cursor cursor = db.query(mainCollumn, String[] columns, "used=0 and season<=?", new String[] {seasons}, null, null, "RANDOM() LIMIT " + count);
    
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料