2013-06-01 4 views
1

Я пытаюсь создать метод определения, существует ли пользователь в базе данных SQL sqlite перед вставкой, я попытался построить этот метод, чтобы вернуть количество строк, однако, если я попытаюсь поиск, как спички, как этотAndroid sqlite возвращает количество строк из запроса

String[] columns = new String[] { SCREEN_NAME, NAME, PROFILE_IMAGE_URL, 
      USER_ID }; 
    Cursor c = friendsDatabase.query(DATABASE_TABLE, columns, SCREEN_NAME 
      + " LIKE '" + screenName + "%'", null, null, null, null); 
    c.moveToFirst(); 
    Integer count= c.getCount(); 
    c.close(); 

    return count; 

я получаю число строк не дало никаких проблем, однако минуты я смотрю на точное соответствие, как этого

String[] columns = new String[] { SCREEN_NAME, NAME, PROFILE_IMAGE_URL, 
      USER_ID }; 
    Cursor c = friendsDatabase.query(DATABASE_TABLE, columns, SCREEN_NAME 
      + " = '" + screenName + "'", null, null, null, null); 
    c.moveToFirst(); 
    Integer count= c.getCount(); 
    c.close(); 

    return count; 

Я получаю 0 строк каждый раз, независимо от того, если он соответствует или нет, я не уверен, что что-то не так с моим SQL или может быть, им, используя неправильные аргументы, чтобы сделать заявление, любая помощь будет пройти долгий путь, благодаря

+0

Почему вы используете LIKE? Ваш запрос LIKE ищет соответствие префикса, а не полное совпадение, например '='. Возможно, вам лучше добавить соответствующее уникальное ограничение в столбце имени экрана и захватить исключение. –

+0

Я использовал LIKE в качестве примера того, что у меня получилось, что мне нужно, это количество строк, возвращаемых для точного совпадения, однако я не могу заставить это работать во втором примере –

+0

У вас есть это имя экрана в вашей базе данных? Указывает ли имя экрана внутри базы данных и тот, на который вы запрашиваете, только в случае? –

ответ

2

Попробуйте этот код может работать

Использование Raw Query

Cursor mCount= db.rawQuery("select count(*) from "+ DATABASE_TABLE +" where "+SCREEN_NAME+"='" + SCREEN_NAME + "'", null); 
mCount.moveToFirst(); 
int count= mCount.getInt(0); 
mCount.close(); 

Или, используя один и тот же код, но по-разному

db.query(DATABASE_TABLE , columns, SCREEN_NAME=?, new String[] { SCREEN_NAME}, null, null, null); 
c.moveToFirst(); 
Integer count= c.getCount(); 
c.close(); 
Смежные вопросы