2

该程序是用于在 Listview 中显示数据库的类。我想通过给定的关键字添加对数据库中所需数据的搜索。如何添加在同一类中使用关键字在数据库中搜索的代码

  public class DisplayActivity extends Activity
  {

private ArrayList<String> arraylist=new ArrayList<String>();
private SQLiteDatabase MYdatabase;
ListView listView;
Button back;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display);
    listView=(ListView)findViewById(R.id.listView1);

        DatabaseHelper db=new DatabaseHelper(this);
        MYdatabase=db.getWritableDatabase();
    try {   
        Cursor c=MYdatabase.rawQuery("SELECt * FROM Student", null);
        if(c!=null)
        {
            if(c.moveToFirst())
            {
                do {
                    String name=c.getString(c.getColumnIndex("NAME"));
                    String age=c.getString(c.getColumnIndex("AGE"));
                    String address=c.getString(c.getColumnIndex("ADDRESS"));
                    arraylist.add("Name :"+name+"\n"+"Age :"+age+"\n"+"Address :"+address+"\n");

                } while (c.moveToNext());
            }
        }

        c.close();
        c.deactivate();

    } catch (SQLiteException e) {

        Log.d(getClass().getSimpleName(), "could not create"+"or open the database");

    }
    finally
    {
        if(MYdatabase!=null)
        {
          MYdatabase.close();
        }
    }
    listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arraylist));
}
public void Back(View v)
{
    Intent back=new Intent(DisplayActivity.this,DbExampleActivity.class);
    startActivity(back);
}
}

以下是活动类代码。认为这很容易理解

 public class DbExampleActivity extends Activity implements OnClickListener{
 Button submit,select,search;
 AlertDialog di;
 private SQLiteDatabase sqLiteDatabase;
 private SQLiteStatement sqLiteStatement;
 private String name,age,address;
 private static final String TABLE_NAME="Student";
@Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    submit=(Button)findViewById(R.id.savebutton);
    select=(Button)findViewById(R.id.detailsbutton);
    search=(Button)findViewById(R.id.searchbutton);
    DatabaseHelper db=new DatabaseHelper(this);
    sqLiteDatabase=db.getWritableDatabase();
    sqLiteStatement=sqLiteDatabase.compileStatement("insert into "+TABLE_NAME+"(name,age,address)values(?,?,?)");
   submit.setOnClickListener(this);
   select.setOnClickListener(this);
   search.setOnClickListener(this);
}

@Override
public void onClick(View v) {

    switch (v.getId()) {
    case R.id.detailsbutton:
        Intent in=new Intent(getApplicationContext(),DisplayActivity.class);
        startActivity(in);

        break;
    case R.id.savebutton:
        name=((EditText)findViewById(R.id.editText1)).getText().toString().trim();
        age=((EditText)findViewById(R.id.editText2)).getText().toString().trim();
        address=((EditText)findViewById(R.id.editText3)).getText().toString().trim();

        sqLiteStatement.bindString(1, name);
        sqLiteStatement.bindString(2, age);
        sqLiteStatement.bindString(3, address);
        sqLiteStatement.executeInsert();

        Toast.makeText(getApplicationContext(), "Data Saved", Toast.LENGTH_LONG).show();
        break;
    case R.id.searchbutton:
         Intent search=new Intent(getApplicationContext(),DisplayActivity.class);
         startActivity(search);
    default:
        break;
    }

}
}

要添加什么代码以允许使用关键字搜索数据库

4

3 回答 3

2
    EditText1=(EditText)findViewById(R.id.editText1);
    EditText1.addTextChangedListener(new TextWatcher() {

        @Override
                 public void onTextChanged(CharSequence s, int start, int before,int count) 
    {
                     populateListView(s.toString());

                    }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

              public void populateListview(String s){

           DatabaseHelper db = new DatabaseHelper(this);
           MYdatabase = db.getWritableDatabase();

    try {   
    Cursor c=MYdatabase.rawQuery(" SELECT * FROM Student WHERE City ID '"+s+%"'", null); 
    if(c!=null)
    {
        if(c.moveToFirst())
        {
            do {
                String name=c.getString(c.getColumnIndex("NAME"));
                String age=c.getString(c.getColumnIndex("AGE"));
                String address=c.getString(c.getColumnIndex("ADDRESS"));
                arraylist.add("Name :"+name+"\n"+"Age :"+age+"\n"+"Address :"+address+"\n");

            } while (c.moveToNext());
        }
    }

    }

    c.close();
    db.close();
    db=null;

    listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arraylist));
}
          }
于 2012-06-20T12:09:33.777 回答
0

据我了解,我认为您可以使用Like Clause

例如:

   " SELECT * FROM Student WHERE City LIKE '"+ keyWord +%'"
于 2012-06-19T11:50:47.210 回答
0

替换光标 c=MYdatabase.rawQuery("SELECt * FROM Student", null); 使用光标 c=MYdatabase.rawQuery("SELECT * FROM Student WHERE id=" + ID, null);

使用 editText.getText().toString() 从 EditText 检索 ID;并在查询数据库时将其作为参数传递。

于 2012-06-19T13:02:29.120 回答