Обновлены на комментатор вопросы:SQLite вставка нуля вместо требуемого значения
Я пытаюсь вставить значения в таблицу SQLite, но когда я получать это значение, это выглядит как пустая становятся вставлено вместо этого.
Вызов, чтобы вставить строку и выборок/регистрировать все существующие строки выше дан как:
@Override
public void onClick(View v) {
Deck deck = new Deck(mDeckNameText.getText().toString());
dbHandler.addDeck(deck);
List<Deck> allDecks = dbHandler.getAllDecks();
Log.d("Get Decks", "Getting all decks");
for (Deck one_deck: allDecks){
int deck_id = one_deck.getDeckId();
String deck_id_string = ""+deck_id;
Log.d("ID: ", deck_id_string);
String deck_name = one_deck.getDeckName();
if (deck_name != null) {
Log.d("Name: ", deck_name);
}
else {
Log.d("Name: ", "null");
}
}
}
Метод addDeck, чтобы вставить строку (которая в моем обработчике базы данных) выглядит следующим образом :
void addDeck(Deck deck) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_DECK_NAME, deck.getDeckName());
db.insert(TABLE_DECKS,null,values);
}
Где класс Deck определяется как:
public class Deck {
int _deck_id;
String _deck_name;
public Deck(){
}
public Deck(String deck_name) {
this._deck_name = deck_name;
}
public Deck(int deck_id, String deck_name) {
this._deck_id = deck_id;
this._deck_name = deck_name;
}
//get deck_id
public int getDeckId(){
return this._deck_id;
}
//set deck_id
public void setDeckId(int deck_id){
this._deck_id = deck_id;
}
//get deck name
public String getDeckName(){
return this._deck_name;
}
//set deck name
public void setDeckName(String deck_name){
this._deck_name = deck_name;
}
}
таблицы видно, что содер нс палубы создается следующим способом:
public void onCreate(SQLiteDatabase db) {
String CREATE_DECKS_TABLE = "CREATE TABLE "+TABLE_DECKS+"("
+KEY_DECK_ID+" INTEGER PRIMARY KEY, "+KEY_DECK_NAME
+" TEXT"+")";
db.execSQL(CREATE_DECKS_TABLE);
}
методы для извлечения палуб являются следующие:
//get single deck
public Deck getDeck(long deck_id) {
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_DECKS + " WHERE "
+ KEY_DECK_ID + " = " + deck_id;
Log.e(LOG, selectQuery);
Cursor c = db.rawQuery(selectQuery, null);
if (c != null)
c.moveToFirst();
Deck deck = new Deck();
deck.setDeckId(c.getInt(c.getColumnIndex(KEY_DECK_ID)));
return deck;
}
//get all decks
public List<Deck> getAllDecks() {
List<Deck> deck_list = new ArrayList<Deck>();
String selectQuery = "SELECT * FROM " + TABLE_DECKS;
Log.e(LOG, selectQuery);
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (c.moveToFirst()) {
do {
Deck deck = new Deck();
deck.setDeckId(c.getInt((c.getColumnIndex(KEY_DECK_ID))));
// adding to decks
deck_list.add(deck);
} while (c.moveToNext());
}
return deck_list;
}
Выход журнала я получаю, когда я получать палубных идентификаторы и имена палубных из строки в моей таблице выглядит следующим образом (после третьей попытки при вставке колоду):
D/ID :: 1
D/Имя :: Null
D/ID :: 2
D/Имя :: null
D/ID :: 3
D/Имя :: Null
Любая идея, почему имя возвращается в нуль?
Заранее спасибо.
где код, который вы используете для получения данных из sqlite? в вашем onclick вы создаете новый объект, у которого есть пустой deckname. – krispymallows
. Deckname не создается для mDeckNameText.getText(). toString()? –
Я также обновил вопрос, чтобы включить код, который я использую для извлечения данных из sqlite. Еще раз спасибо! –