Android 如何在查询中使用主键而不是名称来获取特定行的数据?

Android 如何在查询中使用主键而不是名称来获取特定行的数据?,android,Android,此代码可以工作,但查询基于名称。如何使用主键而不是名称,而不在listview中显示主键 此代码位于我的数据库文件中: public ArrayList<String> data() { ArrayList<String> ar = new ArrayList<String>(); ArrayList<String> av = new ArrayList<String>(); SQLiteDatabase db

此代码可以工作,但查询基于名称。如何使用主键而不是名称,而不在listview中显示主键

此代码位于我的数据库文件中:

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 )";