Android SQLite не соблюдает ограничение "не ноль" - PullRequest
1 голос
/ 22 января 2012

Я работаю с простой базой данных.Он имеет три столбца._id (автоинкремент первичного ключа целого), jobnumber (уникальный текст, не ноль) и partpart (текст не нулевой).

Я использую диалог с двумя виджетами EditText, чтобы получить ввод, и после нажатия кнопки добавить его вбаза данных.

Когда я ввожу номер работы, но оставляю часть работы пустой, я ожидаю, что запись не будет добавлена.Тем не менее, он добавляется, и я получаю пустую работу.Я использовал «вставить».Глядя, я подумал, что, возможно, мне нужно вместо этого использовать «insertWithOnConflict», но, похоже, это ничего не меняет, произошло то же самое.

Моей следующей мыслью было, что пустая строка не считается нулевойзначение, поэтому я попробовал следующее:

if (jobpart == "") {
    jobpart1 = null;
}else{
    jobpart1 = jobpart;
}

Произошло то же самое, база данных даже не икнула и вставила пустой слот.

Итак, я начал просматривать документацию по SQL.Мне интересно, если мне нужно установить БД в строгом режиме, как, возможно, используется неявное значение по умолчанию?Хотя я обнаружил, что в разделе, связанном с серверами, я не уверен, что он здесь применим, и если да, то как и когда я это сделаю.(При создании БД? На БД открыть?).

Любые указатели приветствуются.

Ответы [ 2 ]

3 голосов
/ 22 января 2012

Когда вы сравниваете строки, вам нужно использовать метод equals(), а не ==, поскольку String - это объект, поэтому == просто сравнивает указатели.

т.е. Вы хотите:

if (jobpart.equals("")) {
2 голосов
/ 22 января 2012

попробуйте

if (jobpart.matches("")) {
jobpart1 = null;
}else{
jobpart1 = jobpart;
}

или вы можете убедиться, что они что-то вводят в правку

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