как сравнить значения текстового поля со значениями базы данных, которые введены в текстовое поле - PullRequest
1 голос
/ 14 декабря 2010

На самом деле, я не хочу принимать то же имя, которое уже введено в текстовое поле (т.е. уникальные значения), хранящиеся в базе данных.

Например, я ввел имя «здоровье» в текстовое поле и сохранил его.Если снова ввести то же имя, оно не будет принято.

Я пробовал ниже, но это не работает.Пожалуйста, помогите мне.

boolean ifExisting(String cat)
     {
      Cursor c = db.rawQuery("SELECT * FROM " + "restaurants" + "WHERE" + "category" + "=" + cat, null); 
         if(c.getCount() == 0)
         {
          return; 
         } 
          else
          {
           return;
          }
     }
       insert();

Ответы [ 2 ]

0 голосов
/ 14 декабря 2010

В вашем слове "ГДЕ" нет пробелов. Вы пишете это:

"SELECT * FROM restaurantsWHEREcategory=" + cat

Просто добавьте пробелы, и это должно быть лучше.

Кстати, использование rawQuery очень медленное из-за времени, используемого для разбора вашей строки. Вы должны взглянуть на приложение NotePad в каталоге Android SDK samples /.

0 голосов
/ 14 декабря 2010

Три проблемы в вашем коде:

  • Ваша функция имеет логический тип возврата, но в обоих случаях вашего оператора if вы возвращаете ничего .Возможно, вам следует попытаться вернуть соответствующее логическое значение?

  • Вы должны проверять все операции sqlite на наличие ошибок.В противном случае они молча сработают на вас, и ваш код просто предположит, что в БД не было совпадающих строк - если он зайдет так далеко без ошибки.

  • Построение запросов SQL путем объединения строкдолжно быть незаконным.Это очень небезопасная практика, и она открывает ваш код для атак с использованием SQL-инъекций и тому подобного.Что произойдет, если ваш пользователь введет "italian"; delete from restaurants в текстовое поле cat?Вы должны использовать размещенные параметры, чтобы защититься от этого.

РЕДАКТИРОВАТЬ:

Согласно ответу LadaRaider, вы также, кажется, пропускаете несколько пробелов в своем запросе SQL.Еще одна причина , а не для объединения строк для ее построения.

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