0

データベーステーブル全体で特定の文字列を検索し、一致した列の行の詳細を取得したいと思います。たとえば、私は以下のようなテーブルを持っています

  **name  email   address  designation**
    sai   xy@mail  75385      nagar
    thiru  y@mail  75893      city

今、私は「nagar」や「thiru」のような検索キーを持っており、それに対するクエリをどのように準備することができますか。誰か知っているなら助けてください。前もって感謝します。

4

2 に答える 2

2

テーブル全体をカーソルに読み込み、各列を検索して列名を取得します。

このようになるかもしれません:

private String getColumnName(String key){
     String columnName="";
     DataBaseAdapter dba=new DatabaseAdapter(getApplicationContext());
     dba.open();
     Cursor cr=dba.fetchAllData();
     cr.moveToFirst();
     while(!cr.isAfterLast()){
            if(key.equals(cr.getString(cr.getColumnIndex("name")))){
                   columnName="name";
            }
            cr.moveToNext();
     }
     cr.moveToFirst();
     while(!cr.isAfterLast()){
            if(key.equals(cr.getString(cr.getColumnIndex("email")))){
                   columnName="email";
            }
            cr.moveToNext();
     }
     cr.moveToFirst();
     while(!cr.isAfterLast()){
            if(key.equals(cr.getString(cr.getColumnIndex("address")))){
                   columnName="address";
            }
            cr.moveToNext();
     }
     cr.moveToFirst();
     while(!cr.isAfterLast()){
            if(key.equals(cr.getString(cr.getColumnIndex("designation")))){
                   columnName="designation";
            }
            cr.moveToNext();
      }
       return columnName;
    }

DataBaseAdapterクラスのfetchAllData()関数には、次のコードが含まれています。

public Cursor fetchAllData(){

  try {
   return database.query(TABLENAME, null, null, null, null,
     null, null);
  } catch (Exception e) {
   return null;
  }
}

これにより、キーの列名がわかります。

したがって、次のようにクエリを実行するのは簡単です。

 String query=  "SELECT * FROM tablename where "+getColumnName()+"='"+key+"'" ;
于 2012-08-09T12:25:09.530 に答える
1

このクエリを試してください。

SELECT * FROM tablename WHERE name = 'nagar' or email = 'nagar' or address = 'nagar' or designation = 'nagar';

また

SELECT * FROM tablename WHERE name or email or address or designation = 'nagar';
于 2012-08-09T12:17:51.367 に答える