Android 如何在查询中使用主键而不是名称来获取特定行的数据?
此代码可以工作,但查询基于名称。如何使用主键而不是名称,而不在listview中显示主键 此代码位于我的数据库文件中:Android 如何在查询中使用主键而不是名称来获取特定行的数据?,android,Android,此代码可以工作,但查询基于名称。如何使用主键而不是名称,而不在listview中显示主键 此代码位于我的数据库文件中: public ArrayList<String> data() { ArrayList<String> ar = new ArrayList<String>(); ArrayList<String> av = new ArrayList<String>(); SQLiteDatabase db
public ArrayList<String> data() {
ArrayList<String> ar = new ArrayList<String>();
ArrayList<String> av = new ArrayList<String>();
SQLiteDatabase db = helper.getReadableDatabase();
Cursor c = db.query(helper.TABLE_NAME, new String[] {helper.NAME,helper.DATE,helper.PEOPLE}, null, null, null, null,null );
c.moveToFirst();
do {
String db_name = c.getString(c.getColumnIndex(helper.NAME))+ " " + c.getString(c.getColumnIndex(helper.DATE))+" "+c.getString(c.getColumnIndex(helper.PEOPLE));
ar.add(db_name);//only ar will be show in listview
c.moveToNext();
} while (!c.isAfterLast());
return ar;
}
public ArrayList data(){
ArrayList ar=新的ArrayList();
ArrayList av=新的ArrayList();
SQLiteDatabase db=helper.getReadableDatabase();
游标c=db.query(helper.TABLE_NAME,新字符串[]{helper.NAME,helper.DATE,helper.PEOPLE},null,null,null,null);
c、 moveToFirst();
做{
String db_name=c.getString(c.getColumnIndex(helper.name))+“”+c.getString(c.getColumnIndex(helper.DATE))+“”+c.getString(c.getColumnIndex(helper.PEOPLE));
ar.add(db_name);//listview中只显示ar
c、 moveToNext();
}而(!c.isAfterLast());
返回ar;
}
活动代码为:
lv = (ListView) findViewById(R.id.listView1);
ar = helper.data();
ArrayAdapter<String> ad = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, ar);
lv.setAdapter(ad);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
String s = parent.getItemAtPosition(position).toString();
String k = "";
String p[] = s.split(" ");
for (int i = 0; i < p.length-7; i++)
k = k + " " + p[i];
k = k.trim();//k contains the name string
Intent i = new Intent(getApplicationContext(), Details.class);
i.putExtra("name", k);//next activity will fetch all the details with the help of name.
startActivity(i);
}
}
lv=(ListView)findViewById(R.id.listView1);
ar=helper.data();
ArrayAdapter ad=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,ar);
低压设置适配器(ad);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//TODO自动生成的方法存根
字符串s=parent.getItemAtPosition(position.toString();
字符串k=“”;
字符串p[]=s.split(“”);
对于(int i=0;i
我对你的问题不是很清楚。但是如果我认为你想这样做,你可以尝试这样做,这会根据书的ID(主键)在数据库中获取一本书
其设置使用:
// SQL statement to create book table
String CREATE_BOOK_TABLE = "CREATE TABLE books ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"title TEXT, "+
"author TEXT )";
如何使用主键而不是名称,而不在listview中显示主键
你不应该负责你在
列表视图中显示的内容吗?“我的代码运行得很完美”-显然不是…..先生,实际上这个应用程序将用于管理活动/派对。它有3页。第一页上有4个编辑文本名称、日期、人数、菜单。从这里,所有详细信息将保存在数据库中。下一页是“预定的聚会"在这个页面上,我放置了一个只显示名称和日期的列表视图。当我点击一个项目时,我将获得所有相关的详细信息。因此,当我点击项目时,我将获得项目位置,这就是名称。这就是为什么我下一次的获取详细信息查询是基于名称的。这会给相同的名称带来问题。那么,我如何获得主键而不是名称。你认为呢ant主键是事件的名称?在我的代码中,其中i.putExtra(“name”,k);//此处k包含get(position)的名称。此处我想使用该特定项的行id。但该id不应显示在listview中。
// SQL statement to create book table
String CREATE_BOOK_TABLE = "CREATE TABLE books ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"title TEXT, "+
"author TEXT )";