[英]Retrieving data from SQLite database and display it into ListView -android
[英]How to display data in listview from sqlite database in android
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
createDatabase();
c = db.rawQuery(fetch,null);
c.moveToFirst();
while(c.moveToNext()){
id = c.getString(c.getColumnIndex("_id"));
name = c.getString(c.getColumnIndex("name"));
number = c.getString(c.getColumnIndex("number"));
//Toast.makeText(Main2Activity.this,id + name,Toast.LENGTH_LONG).show();
from = new String[]{id, name, number};
to = new int[]{R.id.label, R.id.numberq, R.id.num};
adapter = new SimpleCursorAdapter(this,R.layout.layout,c,from,to,0);
}
ListView list = (ListView) findViewById(R.id.listview);
list.setAdapter(adapter);
}
protected void createDatabase(){
db = openOrCreateDatabase("PersonDB",Context.MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS Person(_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR, number VARCHAR);");
}
我试图在列表视图中显示数据,但它显示异常:“ java.lang.IllegalArgumentException:列'_id'不存在”
尝试这个
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
createDatabase();
c = db.rawQuery(fetch,null);
String[] from = new String[]{"_id","name","number"};
int[] to = new int[]{R.id.label, R.id.numberq, R.id.num};
adapter = new SimpleCursorAdapter(this,R.layout.layout,c,from,to,0);
ListView list = (ListView) findViewById(R.id.listview);
list.setAdapter(adapter);
}
protected void createDatabase(){
db = openOrCreateDatabase("PersonDB",Context.MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS Person(_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR, number VARCHAR);");
}
正如其他人指出的那样,将两个id
名称都更改为id
或_id
此外,使用SimpleCursorAdapter
无需自己遍历Cursor,适配器可以为您完成此工作。
Cursor cursor = db.rawQuery(...);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.layout,
cursor,
new String[]{"id", "name", "number"},
new int[]{R.id.label, R.id.numberq, R.id.num});
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
将其替换为您的代码:
protected void createDatabase(){
db = openOrCreateDatabase("PersonDB",Context.MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS Person(_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR, number VARCHAR);");
}
更换
id = c.getString(c.getColumnIndex("_id"));
通过
id = c.getString(c.getColumnIndex("id"));
表中id的列名称是id而不是 _id 。 如该行所示:
db.execSQL("CREATE TABLE IF NOT EXISTS Person(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR, number VARCHAR);");
因此,更换
id = c.getString(c.getColumnIndex("_id"));
与
id = c.getString(c.getColumnIndex("id"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.