2014-12-09 2 views
0

Я пытаюсь создать приложение для Android с простым db (используя встроенный sqlite db). я создал класс, который расширяет SQLiteOpenHelper:«column не существует» при создании db

public class DatabaseHandle extends SQLiteOpenHelper { 

private static final String DATABASE_NAME = "pass_db"; 
public static final String ALIAS_NAME = "name"; 
public static final String USER_NAME = "user"; 
public static final String PASSWORD = "password"; 
public static final String TABLE_NAME = "passwords"; 


public DatabaseHandle(Context context) { 
    super(context, DATABASE_NAME, null, 2); 

} 

@Override 
public void onCreate(SQLiteDatabase database) { 
    Log.i("DatabaseHandle","inside onCreate"); 
    database.execSQL("CREATE TABLE "+ TABLE_NAME +" (_id INTEGER PRIMARY KEY AUTOINCREMENT," + 
      " "+ALIAS_NAME+" TEXT, " + " "+USER_NAME+" TEXT, "+PASSWORD+" TEXT);"); 
    ContentValues values = new ContentValues(); 
    values.put(ALIAS_NAME, "Bank"); 
    values.put(USER_NAME, "maya123"); 
    values.put(PASSWORD, "xyz123"); 
    database.insert(TABLE_NAME, ALIAS_NAME, values); 
} 

и пытается получить эти данные с SimpleCurserAdapter:

public class MainActivityPasswords extends ListActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.user_list); 
    database = (new DatabaseHandle(this)).getWritableDatabase(); 

    passwordCursor = database.rawQuery("SELECT _id, name, password FROM passwords ORDER BY name", null); 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      R.layout.row, 
      passwordCursor, 
      new String[]{DatabaseHandle.ALIAS_NAME, DatabaseHandle.USER_NAME, DatabaseHandle.PASSWORD}, 
      new int[]{R.id.alias, R.id.user_name, R.id.password}, 0); 
    setListAdapter(adapter); 
    registerForContextMenu(getListView()); 
} 

(это частичный код конечно)

при выполнении кода я get:

Java.lang.IllegalArgumentException: Column 'user' не существует.

Почему это? я могу ясно видеть, что у меня есть «пользовательский» столбец при открытии самого файла db.

Помощь!

+0

не существует в курсоре ... – Selvin

+0

вам только получите результат, который вы запрашиваете, в этом случае столбец _id, имя и пароль –

+1

Я думаю, что нет оснований понижать этот вопрос. Вопрос показывает, вероятно, разочаровывающая попытка новичка, пытающегося учиться, также ясно и ясно, показывает попытку и ошибку – nKn

ответ

2

Вы забыли выбрать пользователя столбца в запросе

Изменить этот

passwordCursor = database.rawQuery("SELECT _id, name, password FROM passwords ORDER BY name", null);

к этому

passwordCursor = database.rawQuery("SELECT _id, name, user, password FROM passwords ORDER BY name", null);

+0

Спасибо большое, Гил, это была проблема, теперь она решена! – MayaC

+0

А также спасибо за хороший опыт от StackOverFlow! (хотя я получил downvoted) – MayaC

+0

Нет проблем :) Кстати, вы можете отметить этот ответ как принятый, чтобы другие пользователи знали, что этот вопрос решен –

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