Этот запрос SQLite возвращает курсор со счетчиком 0 ... Я знаю, что он должен иметь хотя бы 1. Может кто-то взглянуть? (Очень быстро) - PullRequest
0 голосов
/ 04 марта 2011
public Cursor fetchIsOverride(String username) {
        int override = 1;
        Cursor cursor = mDb.query(true, OVERRIDE_TABLE, new String[] {KEY_ROWID, KEY_USERNAME, KEY_ISOVERRIDE, KEY_FIRSTNAME, KEY_LASTNAME, KEY_EMAIL, KEY_HOMEPHONE, KEY_WORKPHONE, KEY_PICTURE}, KEY_USERNAME + "= '" + username +"' " + "AND " + KEY_ISOVERRIDE + "=" + override, null, null, null, null, null);
        return cursor;
    }

У меня есть строка в таблице со значением KEY_ISOVERRIDE, равным 1, и с именем пользователя, к которому я обращаюсь. Это наверняка. Кто-нибудь может увидеть что-то не так с этим синтаксисом? Я уверен, что это в предложении WHERE, но, насколько я могу судить, все в порядке. Благодаря.

Ответы [ 4 ]

0 голосов
/ 13 марта 2011

Я был идиотом и включал обоих moveToFirst();И цикл while вроде:

while(moveToNext()) {
    //stuff
}

Извините за беспокойство.Но, возможно, кто-то еще поймает свою ошибку и на этом пути.

0 голосов
/ 04 марта 2011

попробуйте использовать double == вместо single в разделе условий вашего запроса, как это

Cursor cursor = mDb.query(true, OVERRIDE_TABLE, new String[] {KEY_ROWID, KEY_USERNAME, KEY_ISOVERRIDE, KEY_FIRSTNAME, KEY_LASTNAME, KEY_EMAIL, KEY_HOMEPHONE, KEY_WORKPHONE, KEY_PICTURE}, KEY_USERNAME + "== '" + username +"' " + "AND " + KEY_ISOVERRIDE + "==" + override, null, null, null, null, null);
0 голосов
/ 04 марта 2011

Курсор c = db.query ("tbl_TEMP", new String [] {"sitename" + "в качестве имени", "Website" + "в качестве веб-сайта", "category" + "в качестве категории"}, // "sitename "+" =? ", new String [] {" iPhoneAppDeveloper "}, null, null, null);"sitename" + "=?", new String [] {"ваша строка, чтобы найти запись perticular от DB"}, null, null, null);

if (c.moveToFirst ()) {String name, сайт, categoty;int nameColumn = c.getColumnIndex ("name");int websiteColumn = c.getColumnIndex ("website");int categoryColumn = c.getColumnIndex ("category");

            do
            {
                // Get the field values
                    name = c.getString(nameColumn);
                    TvXmlData.append("\n" +name );
                    website = c.getString(websiteColumn);
                    TvXmlData.append("\n " + website );
                    categoty = c.getString(categoryColumn);
                    TvXmlData.append("\n " + categoty );

            } while (c.moveToNext());

     }
    c.close();
    db.close();
0 голосов
/ 04 марта 2011

Если ваша строка username или override содержит знаки препинания, пробелы или другие необычные символы, возможно, ее необходимо экранировать.Лучше использовать привязку параметров apis вместо интерполяции строк непосредственно в операторы SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...