Как я могу проверить, равна ли String строка в SQlite, и напечатать всю строку? - PullRequest
0 голосов
/ 01 июня 2018

В моем приложении у меня есть SQliteDatabase со следующей структурой и данными

(это просто пример)

ID_CLI        NAME_CLI    WHERE_CLI
2345           IGOR         LVIV
4566           OLEG         KIEV   
1234           GIAN         REGGIO

Теперь в моем MainActivity у меня есть EditText и Button, поэтому, если я введу EditText 2345 и нажму Button, я бы, чтобы в TextView было напечатано 2345 IGOR LVIV

На самом деле я уже искалнекоторые подобные вещи в Интернете, но не нашли ничего, что могло бы решить мою проблему.

У вас есть какие-либо предложения о том, как я могу это сделать?

Вот моя база данных

public class DataBaseHandler extends SQLiteOpenHelper {

private static DataBaseHandler sInstance;

private static final String DATABASE_NAME = "Clienti.db";

private static final String TABLE_CLIENTS = "clienti_table";
private static final String ID_CLI = "ID_CLI";
private static final String COD_CLI = "COD_CLI";
private static final String RS1_CLI = "RS1_CLI";

public static synchronized DataBaseHandler getInstance(Context context) {

    // Per inizializzare il db in altre activities inserire :
    // DataBaseHandler myDB;
    // myDB = DataBaseHandler.getInstance(this);

    if (sInstance == null) {
        sInstance = new DataBaseHandler(context.getApplicationContext());
    }
    return sInstance;
}

private DataBaseHandler(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_TABLE_CLIENTS = "CREATE TABLE IF NOT EXISTS " + TABLE_CLIENTS + " (ID_CLI TEXT,COD_CLI TEXT,RS1 TEXT)";
    db.execSQL(CREATE_TABLE_CLIENTS);
 }

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CLIENTS);
    onCreate(db);
}

public void insertCLI(String ID,String COD,String RS1){

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(ID_CLI,ID);
    values.put(COD_CLI,COD);
    values.put(RS1_CLI,RS1);

    db.insertWithOnConflict(TABLE_CLIENTI, null, values, SQLiteDatabase.CONFLICT_REPLACE);
}

public Cursor getDataTable()
{
    SQLiteDatabase db = this.getWritableDatabase();
    return db.rawQuery("SELECT * FROM " + TABLE_CLIENTS);
}
}

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

добавьте этот метод в класс обработчика вашей базы данных

public static String dbRawSearch(String id) {
   String dbString = "";
   SQLiteDatabase db = this.getWritableDatabase();
   String query = "SELECT * FROM " + TABLE_CLIENTS + " WHERE ID_CLI = " + id";
   //Cursor points to a location in your results
   Cursor c = db.rawQuery(query, null);
   //Move to the first row in your results
   c.moveToFirst();
   //Position after the last row means the end of the results
   while (!c.isAfterLast()) {
       if (c.getString(c.getColumnIndex("ID_CLI")) != null) {
           dbString += c.getString(c.getColumnIndex("ID_CLI")) + "   " + c.getString(c.getColumnIndex("NAME_CLI")) + "   " + c.getString(c.getColumnIndex("WHERE_CLI"));
           dbString += "\n";
       }
       c.moveToNext();
   }
   db.close();
   return dbString;
}

Затем перейдите к своей деятельности и после инициализации editText, button и textView выполните следующее:

DataBaseHandler dbHandler = new DataBaseHandler(this);
String searchKeyword = "";
String result = "";
yourButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(!TextUtils.isEmpty(yourEditText.getText().toString())) {
             searchKeyWord = yourEditText.getText().toString();
             result = dbHandler.dbRawSearch(searchKeyWord );
             if(result != null){
              yourTextView.setText(result);
             }
           }
        }
    });
0 голосов
/ 01 июня 2018

Добавьте метод в ваш DataBaseHandler класс

public Cursor getRowByIdCli(String idCli){

   SQLiteDatabase db = this.getWritableDatabase();
   return db.rawQuery("SELECT * FROM " + TABLE_CLIENTS + " WHERE ID_CLI = ? ", new String[]{idCli} );
}
...