我无法启动这个sqlite选择代码

时间:2016-06-07 15:59:38

标签: java android sqlite

我的应用程序的这个恶意代码:

    SQLiteDatabase db = this.getWritableDatabase();

        Cursor cursor = db.rawQuery("SELECT * FROM Note where Username = '"+acc+"'", null);

        //Cursor cursor = db.rawQuery("SELECT * FROM Note ", null);

        if (cursor.moveToFirst()) {
            do {
                Note_DTO note = new Note_DTO();
                note.setId(Integer.parseInt(cursor.getString(0)));
                note.setDate(cursor.getString(1));
                note.setUser(cursor.getString(2));
                note.setContent(cursor.getString(3));
                NoteList.add(note);
            } while (cursor.moveToNext());

        }

此函数不返回任何内容,但在调试模式下,每个项目都已设置。 如果它返回我选择的列表,我不明白为什么以及它不是。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

使用getReadableDatabase()进行查询,如下所示。

SQLiteDatabase db = this.getReadableDatabase();

请阅读SQLiteOpenHelper

getReadableDatabase()文档here
  

创建和/或打开数据库。这将是返回的同一对象   by getWritableDatabase()除非出现一些问题,比如一个完整的磁盘,   要求数据库以只读方式打开。在那种情况下,a   将返回只读数据库对象。如果问题得到解决,a   将来调用getWritableDatabase()可能会成功,在这种情况下   将关闭只读数据库对象和读/写对象   将来会被退回。

阅读SQLiteOpenHelper 的<{1}}文档here

  

创建和/或打开将用于阅读和的数据库   写作。第一次调用它时,将打开数据库   和onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase,int,int)   和/或onOpen(SQLiteDatabase)将被调用。

     

成功打开后,数据库将被缓存,因此您可以调用它   每次需要写入数据库时​​的方法。 (确保   当您不再需要数据库时调用close()。)错误,例如错误   权限或完整磁盘可能导致此方法失败,但未来   如果问题得到解决,尝试可能会成功。

根据getWritableDatabase()文档,它明确提到它将缓存数据库。因此,可以从数据库的缓存副本中检索数据。与确保在交易后关闭数据库连接相同。

最后您的代码将是这样的

getWritableDatabase()

答案 1 :(得分:0)

试试这个

 SQLiteDatabase database = this.getReadableDatabase();
   String selectQuery = "SELECT * FROM Note where Username " + " LIKE '%" + acc + "%'";
    Cursor cursor = database.rawQuery(selectQuery, null);
        int count = cursor.getCount();
        database.close();
        if(count==0)
        {
            return result;
        }
        else
        {
            if (cursor.moveToFirst()) {


                do {

                   Note_DTO note = new Note_DTO();
                note.setId(Integer.parseInt(cursor.getString(0)));
                note.setDate(cursor.getString(1));
                note.setUser(cursor.getString(2));
                note.setContent(cursor.getString(3));
                NoteList.add(note);
                } while (cursor.moveToNext());

            }