2013-11-02 5 views
-1

У меня есть БД сделал с этим утверждением:кавычки строк в SQLite запроса

DATABASE_CREATE = "create table " 
     + TABLE_BANDS + "(" + COLUMN_ID 
     + " integer primary key autoincrement, " + COLUMN_NAME 
     + " text unique not null, " + COLUMN_GENDER + " text, " + COLUMN_POPULARITY + " real not null);"; 

добавить к нему строку с этим утверждением:

private long addBand(String bandName, String gender) { 
    ContentValues values = new ContentValues(); 
    values.put(BandsSQLiteOpenHelper.COLUMN_NAME, "\"" + bandName.trim().toLowerCase() + "\""); 
    values.put(BandsSQLiteOpenHelper.COLUMN_POPULARITY, 1); 
    values.put(BandsSQLiteOpenHelper.COLUMN_GENDER, ""); 
    long insertId = database.insert(BandsSQLiteOpenHelper.TABLE_BANDS, null, 
      values); 

    return insertId; 
} 

я insertId> 0, так что я думаю, что вставка была в порядке.

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

public Band getBand(String name) { 
    Cursor cursor = database.query(BandsSQLiteOpenHelper.TABLE_BANDS, 
      new String[] {BandsSQLiteOpenHelper.COLUMN_NAME, BandsSQLiteOpenHelper.COLUMN_POPULARITY}, BandsSQLiteOpenHelper.COLUMN_NAME + " = \"" + name.trim().toLowerCase() + "\"", null, 
      null, null, null); 

    cursor.moveToFirst(); 
    Band band = getBandFromCursor(cursor); 
    cursor.close(); 
    return band; 
} 

Но он всегда возвращает меня курсор с 0 длиной. Я попытался удалить цитаты вокруг имени, но после этого запросил работу с текстом.

Кроме того, я попытался использовать rawQuery, но результат тот же.

Cursor cursor = database.rawQuery("Select * from " + BandsSQLiteOpenHelper.TABLE_BANDS + " where band_name = \"" + name.trim().toLowerCase() + "\"", null); 

UPDATE:

Я попробовал одиночные кавычки:

Cursor cursor = database.query(BandsSQLiteOpenHelper.TABLE_BANDS, 
      new String[] {BandsSQLiteOpenHelper.COLUMN_NAME, BandsSQLiteOpenHelper.COLUMN_POPULARITY}, BandsSQLiteOpenHelper.COLUMN_NAME + " = \'" + name.trim().toLowerCase() + "\'", null, 
      null, null, null); 

и

private long addBand(String bandName, String gender) { 
    ContentValues values = new ContentValues(); 
    values.put(BandsSQLiteOpenHelper.COLUMN_NAME, "\'" + bandName.trim().toLowerCase() + "\'"); 
    values.put(BandsSQLiteOpenHelper.COLUMN_POPULARITY, 1); 
    values.put(BandsSQLiteOpenHelper.COLUMN_GENDER, ""); 
    long insertId = database.insert(BandsSQLiteOpenHelper.TABLE_BANDS, null, 
      values); 

    return insertId; 
} 

Как перед вставкой в ​​порядке, выбор возвращает 0 строк.

+1

В SQL строки имеют одинарные кавычки, '' ', а не двойные кавычки,' '' – Simon

ответ

1

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

Что касается вашего rawQuery, попробуйте следующее: "SELECT * FROM " + BandsSQLiteOpenhelper.TABLE_BANDS + " WHERE band_name = '" + name.trim().toLowerCase() + "'";

Попробуйте одиночные кавычки вместо двойных кавычек при использовании строк в качестве идентификаторов в WHERE отчетности.

+0

Спасибо, выбор с текстом и вставка без кавычек. – TpoM6oH

+0

Рад помочь. – Razgriz

Смежные вопросы