我想问一下,如何从我的数据库“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);
}
}
答案 0 :(得分:1)
您确实没有向我们提供大量信息......我不确定您的代码崩溃的原因,文件R.layout.homework
包含的内容等等。
您需要两件事来将数据绑定到ListActivity中的ListView。 1)您需要一个Cursor来读取感兴趣的列,以及2)您需要一个Adapter来将数据库行绑定到ListView。因此,您需要实现一个查询数据库并在数据库上返回Cursor的方法,如果您愿意,还需要创建SimpleCursorAdapter mAdapter
(或BaseAdapter
的其他子类),绑定适配到感兴趣的列,并使用onCreate()
之类的内容结束setListAdapter(mAdapter)
方法。您还必须小心,不要意外打开Cursor
或SQLiteDatabase
的多个实例而不关闭它们,否则系统将抛出异常。
最好的办法是查看Android开发者网站上的notepad tutorial。真的试着理解一切是如何运作的,你会学到很多东西。这是一个很棒的教程,它与你需要完成的工作非常相似(也就是说,它查询数据库并将“todo notes”绑定到主屏幕上的列表中)。您还将学习如何管理Activity
生命周期以及如何从头开始正确创建SQLiteDatabase
。
希望有道理。如果没有,请阅读记事本教程,然后回过头来阅读我的答案,希望它会更有意义。我和几个月前的位置一样......它变得更容易,但你真的必须坐下来试着先了解这些东西是如何工作的,记事本教程是一个很好的起点!
祝你好运!