Я работаю над проектом, в котором необходимо сравнить строки (идентификатор пользователя и пароль), которые я получаю от Bluetooth, сохранить их в sqlite, а затем сравнить их со строками, которые я получаю из editTexts (идентификатор пользователя и пароль). Я могу читать ввод с bluetooth и сохранять его в sqlite, но я не знаю, как сравнить его с данными, которые я получаю от editTexts. можешь мне помочь?
вот действие mydBHelper:
public class myDbAdapter {
myDbHelper myhelper;
public myDbAdapter(Context context)
{
myhelper = new myDbHelper(context);
}
public long insertData(String userid, String pass)
{
SQLiteDatabase dbb = myhelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(myDbHelper.UID, userid);
contentValues.put(myDbHelper.MyPASSWORD, pass);
long id = dbb.insert(myDbHelper.TABLE_NAME, null , contentValues);
return id;
}
static class myDbHelper extends SQLiteOpenHelper
{
private static final String DATABASE_NAME = "myDatabase"; // Database Name
private static final String TABLE_NAME = "myTable"; // Table Name
private static final int DATABASE_Version = 1; // Database Version
private static final String UID = "_id"; // Column I (Primary Key)
private static final String MyPASSWORD= "Password"; // Column III
private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+
" ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT ,"+ MyPASSWORD+" VARCHAR(225));";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS "+TABLE_NAME;
private Context context;
public myDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_Version);
this.context=context;
}
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
} catch (Exception e) {
Message.message(context,""+e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
Message.message(context,"OnUpgrade");
db.execSQL(DROP_TABLE);
onCreate(db);
}catch (Exception e) {
Message.message(context,""+e);
}
}
}
}
полученная строка была вставлена в действие FromServer:
public class FromServer extends AppCompatActivity {
myDbAdapter helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_from_server);
//Userid_txt= (EditText) findViewById(R.id.editUserID);
//Pass_txt= (EditText) findViewById(R.id.editPass);
helper = new myDbAdapter(this);
}
//insert string from bluetooth
public void insertData() {
//----------------passed string from bluetooth
Intent intent = getIntent();
String message = intent.getExtras().getString("moved");
try {
JSONObject obj = new JSONObject(message);
String t1 = obj.getString("user_id");
String t2 = obj.getString("password");
if (t1.isEmpty() || t2.isEmpty()) {
Message.message(getApplicationContext(), "User ID and Password empty");
}
long id = helper.insertData(t1, t2);
if (id >= 0) {
Message.message(getApplicationContext(), "Insertion success");
} else {
Message.message(getApplicationContext(), "Insertion to database failed");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Затем в Main Activity я создаю userid.getText и password.getText, которые будут сравниваться с моими данными из sqlite. Я новичок в sqlite, пожалуйста, помогите мне.
Следующий метод в классе myDbAdapter вернет true, если есть совпадающие данные, или false в противном случае.
public boolean compareData(String userid, String pass)
{
boolean rv = false;
SQLiteDatabase dbb = myhelper.getWritableDatabase();
String whereclause = myDbHelper.UID + "=? AND " + myDbHelper.MyPASSWORD + "=?";
String[] whereargs = new String[]{userid,pass};
Cursor csr = dbb.query(myDbHelper.TABLE_NAME,null,whereclause,whereargs,null,null,null);
if (csr.getCount() > 0) {
rv = true;
}
csr.close();
return rv;
}
Вы можете вызвать это, используя что-то вроде: -
if (helper.compareData(Userid_txt.getText().toString(),Pass_txt.getText().toString()) {
.... handle data compares
} else {
.... handle data does not compare
}
Вы, вероятно, захотите создать переменные класса Userid_txt и Pass_Txt, а также иметь средства для вызова вышеуказанного после ввода данных (возможно, кнопки). Итак, если предположить, что у вас есть кнопка, у вас может быть что-то вроде: -
public class FromServer extends AppCompatActivity {
myDbAdapter helper;
EditText Userid_txt, Pass_txt;
Button doCompare;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_from_server);
Userid_txt= (EditText) findViewById(R.id.editUserID);
Pass_txt= (EditText) findViewById(R.id.editPass);
doCompare = (Button) findViewById(R.id.your_button);
helper = new myDbAdapter(this);
doCompare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
helper.compareData(Userid_txt.getText().toString(),Pass_txt.getText().toString()) {
//.... handle data compared
} else {
//.... handle data doesn't compare
}
}
});
}
......