Как я могу считывать данные из базы данных SQLite и перечислять их? - PullRequest
1 голос
/ 17 января 2012

Я хотел бы спросить, как я могу прочитать данные из моей базы данных "test_database.db" и вывести их на экран?

База данных: test_database.db

Таблица: tbl_homework

In table homework are those entries:
ID             HW
1              Mathematics
2              Physics
3              Sports

Так что я знаю, как я могу отправить ОДНУ запись на тост или оповещение. (С курсором) Я прочитал этот учебник здесь, но я не могу построить этот пример для своего приложения. http://coenraets.org/blog/android-samples/androidtutorial/

Что у меня есть? Java: CustomDatabaseHelper.java, homework.java, main.java

Макет: homework.xml, main.xml

homework.java - это обычное занятие, я пытался изменить его на ListActivity. Но тогда это терпит крах.

Вот код: (Работает нормально)

public class homework extends Activity {
SQLiteDatabase db;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.homework);

    //Create Database
    db = openOrCreateDatabase("test_database.db", 
            SQLiteDatabase.CREATE_IF_NECESSARY, null);

    db.setVersion(1);
    db.setLocale(Locale.getDefault());
    db.setLockingEnabled(true);

    //Create table tbl_homework
    final String CREATE_TABLE_HW =
            "CREATE TABLE IF NOT EXISTS tbl_homework ("
            + "id INTEGER PRIMARY KEY AUTOINCREMENT,"
            + "hw TEXT);";

            db.execSQL(CREATE_TABLE_HW);

    press_cmd_back();
    press_cmd_test_data();

}

//What will happen if cmd_back gets pressed
private void press_cmd_back(){
    Button cmd_back = (Button)findViewById(R.id.cmd_back);
    cmd_back.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Intent Intent_main = new Intent(homework.this, Noten_HausaufgabenActivity.class);
            startActivity(Intent_main);
        }
    });
}



//What will happen if cmd_test_data gets pressed
    private void press_cmd_test_data(){
        Button cmd_test_data = (Button)findViewById(R.id.cmd_test_data);
        cmd_test_data.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            open_database_rw();
            final String INSERT_DATA_1 = "INSERT INTO tbl_homework ('hw') VALUES ('Mathematics')";
            final String INSERT_DATA_2 = "INSERT INTO tbl_homework ('hw') VALUES ('Physics')";
            final String INSERT_DATA_3 = "INSERT INTO tbl_homework ('hw') VALUES ('Sports')";


            db.execSQL(INSERT_DATA_1);
            db.execSQL(INSERT_DATA_2);
            db.execSQL(INSERT_DATA_3);

        }
    });

}

//Open Database RW
private void open_database_rw() {
    db = SQLiteDatabase.openDatabase("/data/data/test.marco.notenha/databases/test_database.db", 
            null, SQLiteDatabase.OPEN_READWRITE);
}

}

1 Ответ

1 голос
/ 17 января 2012

Вы действительно не дали нам много информации ... Я не уверен, почему ваш код падает, что содержит файл R.layout.homework и т. Д.

Вам нужно связать две вещиданные для ListView в вашем ListActivity.1) вам нужен курсор для чтения интересующих вас столбцов, и 2) вам нужен адаптер для привязки строк базы данных к ListView.Поэтому вам необходимо реализовать метод, который запрашивает базу данных и возвращает курсор над базой данных, а также вам необходимо создать SimpleCursorAdapter mAdapter (или какой-либо другой подкласс BaseAdapter, если хотите), привязать адаптер к столбцами завершите свой метод onCreate() чем-то вроде setListAdapter(mAdapter).Вы также должны быть осторожны, чтобы случайно не открыть несколько экземпляров Cursor или SQLiteDatabase, не закрывая их, иначе система выдаст исключение.

Лучше всего проверитьознакомьтесь с учебником по на сайте разработчиков Android.Постарайтесь понять, как все работает, и вы многому научитесь.Это отличный учебник, и он очень похож на то, что вам нужно сделать (то есть он запрашивает базу данных и привязывает «заметки к задачам» к списку на главном экране).Вы также узнаете, как управлять жизненным циклом Activity и как правильно создавать SQLiteDatabase с нуля.

Надеюсь, что это имело смысл.Если этого не произойдет, прочитайте учебник по блокноту, а затем вернитесь и прочитайте мой ответ, и, надеюсь, это будет иметь больше смысла.Я был в том же положении, что и вы, несколько месяцев назад ... становится легче, но вам действительно нужно сесть и попытаться понять, как все это работает в первую очередь, и учебник по блокнотам - отличное место для начала!

Удачи!

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