android - 如何定义以编程方式从 sqlite 检索数据的过程?

标签 android sqlite

我对这些 sqlite 访问编程很陌生。我有 9 个编辑文本并编码为将值存储在 sqlite 数据库中...下次如果我在第一个编辑文本中插入相同的值,则剩余的值应该显示而无需输入...下面的代码是什么我已经尝试过但无法取回值

//this is my dbhandler class method

> public Data findProduct(String phone) {       String query = "Select *
> FROM " + TABLE_FEEDBACK + " WHERE " + COLUMN_PHONENO + " =  \"" +
> phone + "\"";
>               SQLiteDatabase db = this.getWritableDatabase();
                Cursor cursor = db.rawQuery(query, null);
          Data data = new Data();
          if (cursor.moveToFirst()) {             cursor.moveToFirst();           data.setPHONE(cursor.getString(0));
      data.setName(cursor.getString(1));
      data.setFood(cursor.getString(2));
      data.setService(cursor.getString(3));
      data.setCleanliness(cursor.getString(4));
      data.setExperience(cursor.getString(5));
      data.setAddress(cursor.getString(6));
      data.setEmail(cursor.getString(7));
      data.setBirthday(cursor.getString(8));
      data.setAnniversary(cursor.getString(9));
      data.setFavrestaurant(cursor.getString(10));
      data.setFavstaff(cursor.getString(11));
      data.setFavdish(cursor.getString(12));
      data.setSuggestion(cursor.getString(13));
      data.setReturn(cursor.getString(14));           cursor.close();         } else {
      data = null;        }
      db.close();         return data;    }
/*public void openDataBase(SQLiteDatabase db) throws SQLException {   

    //Open the database       
    String myPath = DB_PATH + DATABASE_NAME;      
    db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);     
    }  */
//this is my mainactivity method
public void lookupProduct (View view) {
     DBHandler dbHandler = new DBHandler(MainActivity.this);

     Data data = 
      dbHandler.findProduct(phonenumber.getText().toString());

     if (data != null) {
       name.setText(String.valueOf(data.getName()));
       address.setText(String.valueOf(data.getAddress()));
  } else {
         name.setText("No Match Found");
  }            }

最佳答案

我通过在 dbhandler 类中定义方法并在主 Activity 中调用它们来实现此目的

public Data findProduct(String phone) {
    String query = "Select * FROM " + TABLE_FEEDBACK + " WHERE " + COLUMN_PHONENO + " =  \"" + phone + "\"";
    System.out.println("this is the product >>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
    SQLiteDatabase db = this.getWritableDatabase();

    Cursor cursor = db.rawQuery(query, null);

    Data data0 = new Data();

    if (cursor.moveToFirst()) {
        cursor.moveToFirst();
        data0.setPHONE(cursor.getString(0));
        data0.setName(cursor.getString(1));

        data0.setAddress(cursor.getString(6));
        data0.setEmail(cursor.getString(7));


        cursor.close();
    } else {
        data0 = null;
    }
    System.out.println("data set value :>>>>>>>");
        db.close();
    return data0;
}

这是 on click() 下的主要 Activity 代码

EditText phonenumber = (EditText) findViewById(R.id.editText1);
              String phonenmbr = phonenumber.getText().toString();
              Data data0 = dbHandler.findProduct(phonenmbr);
if (data0 != null) {
                 phonenumber.setText(String.valueOf(data0.getPHONE()));
                 customername.setText(String.valueOf(data0.getName()));
                 customeraddress.setText(String.valueOf(data0.getAddress()));
                 customeremail.setText(String.valueOf(data0.getEmail()));



          } else {
              Toast.makeText(MainActivity.this, "Please enter other details", Toast.LENGTH_SHORT).show();
          }    

关于android - 如何定义以编程方式从 sqlite 检索数据的过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18870009/

相关文章:

android - 更新语句不更新字段

android - 在没有自定义布局文件的情况下将 DialogFragment 的消息居中

android - 删除原生 android 中的循环依赖

android - 在 Android 中打开/关闭移动数据 - 无反射

java - 我希望这段代码从 android studio 循环

ANDROID SQLITE 检查表是否有数据

java - 无法从 SQLite 检索数据

android - 无法在 ActiveAndroid 中保存空列值

安卓工作室 : cannot recover key

java - 无法通过 fragment 内的上下文菜单从自定义 ListView 中删除数据库行 - Android