Java 如何检查editText中插入的文本是否存在于SQLite数据库中,如果存在则返回消息,如果不存在则返回不同的消息
我是编程新手,我正在尝试制作一个应用程序,创建一个SQLite数据库,向该数据库添加一个表,允许我更新该表并查看插入其中的数据。然后,我希望它检查我插入到editText中的文本(例如名称)是否存在于数据库中,并返回一条消息,如果找到文本,则返回“employee exist”,如果数据库中没有名称,则返回另一条消息“employee not found” 除了应用程序应该检查数据库中是否存在名称并返回消息的部分之外,我已经设法完成了所有工作。就我所知: DatabaseHelper如下所示:Java 如何检查editText中插入的文本是否存在于SQLite数据库中,如果存在则返回消息,如果不存在则返回不同的消息,java,android,sqlite,android-studio,Java,Android,Sqlite,Android Studio,我是编程新手,我正在尝试制作一个应用程序,创建一个SQLite数据库,向该数据库添加一个表,允许我更新该表并查看插入其中的数据。然后,我希望它检查我插入到editText中的文本(例如名称)是否存在于数据库中,并返回一条消息,如果找到文本,则返回“employee exist”,如果数据库中没有名称,则返回另一条消息“employee not found” 除了应用程序应该检查数据库中是否存在名称并返回消息的部分之外,我已经设法完成了所有工作。就我所知: DatabaseHelper如下所示:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int dbVersion = 1;
public static final String DATABASE_NAME="numere_masini.db";
public static final String TABLE_NAME="tabel_masini";
public static final String COL_1="ID";
public static final String COL_2="NUME";
public static final String COL_3="PRENUME";
public static final String COL_4="NUMAR_DOSAR";
public static final String COL_5="COD_ORGANIGRAMA";
public static final String COL_6="CENTRU_COST";
public static final String COL_7="NUMAR_AUTO_1";
public static final String COL_8="NUMAR_AUTO_2";
public static final String COL_9="NUMAR_AUTO_3";
SQLiteDatabase db;
private static final String createTable = "Create Table " + TABLE_NAME + "("
+ COL_1 + " Integer Primary Key AutoIncrement," +
COL_2 + " Text," +
COL_3 + " Text," +
COL_4 + " Text," +
COL_5 + " Text," +
COL_6 + " Text," +
COL_7 + " Text," +
COL_8 + " Text," +
COL_9 + " Text" + ");";
public DatabaseHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null,dbVersion );
}
@Override
public void onCreate(SQLiteDatabase SQLiteDatabase) {
this.db= SQLiteDatabase;
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase SQLiteDatabase, int i, int i1) {
String query = "DROP TABLE IF EXISTS" + TABLE_NAME;
db.execSQL(query);
this.onCreate(db);
}
public boolean cautaNumar(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query(TABLE_NAME, new String[]{COL_2}, COL_2+"=?", new String[] {}, null, null, null, "1");
if (cursor.moveToFirst()) {
return true; // a row was found
}
return false; // no row was found
}
主要活动是这个
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
DatabaseHelper myDb;
EditText editNume, editPrenume, editNumar_dosar, editCod_organigrama, editCentru_cost, editNumar_auto_1, editNumar_auto2, editNumar_auto3,editTextId, editCauta;
Button btnAdaugaNumar;
Button btnverificaNumar;
Button btnActualizeazaInformatii;
Button btnAfiseazaDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDb=new DatabaseHelper(this);
editNume= (EditText)findViewById(R.id.editText_nume);
editPrenume= (EditText)findViewById(R.id.editText_prenume);
editNumar_dosar= (EditText)findViewById(R.id.editText_numar_dosar);
editCod_organigrama= (EditText)findViewById(R.id.editText_cod_organigrama);
editCentru_cost= (EditText)findViewById(R.id.editText_centru_cost);
editNumar_auto_1= (EditText)findViewById(R.id.editText_numar_auto_1);
editNumar_auto2= (EditText)findViewById(R.id.editText_numar_auto_2);
editNumar_auto3= (EditText)findViewById(R.id.editText_numar_auto_3);
editTextId=(EditText)findViewById(R.id.editText_id) ;
editCauta=(EditText) findViewById(R.id.editText_cauta);
btnAdaugaNumar=(Button)findViewById(R.id.button_adauga_angajat);
btnverificaNumar= (Button) findViewById(R.id.button_verifica_numar);
btnActualizeazaInformatii=(Button) findViewById(R.id.button_actualizeaza_informatii);
btnAfiseazaDb=(Button) findViewById((R.id.button_afiseaza_db));
AddData();
viewAll();
UpdateData();
verificaNumar();
}
// i have no idea how ro write this segment
public void verificaNumar (){
String cautare= editCauta.getText().toString();
if(myDb.cautaNumar()) {
Toast.makeText(MainActivity.this, "employee exist", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(MainActivity.this,"employee not found", Toast.LENGTH_LONG).show();
}
}
类内DatabaseHelper:
public boolean cautaNumar(String name){
boolean flag = false;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query(TABLE_NAME, new String[]{COL_2}, COL_2+"=?", new String[] {}, null, null, null, "1");
if (cursor.moveToFirst()) {
if(cursor.getString("name").equalsIgnoreCase(name)) {
flag = true;
}
else {
flag = false;
}
}
return flag;
}
课堂活动:
public void verificaNumar (){
String cautare = editCauta.getText().toString();
if(myDb.cautaNumar(cautare)) {
Toast.makeText(MainActivity.this, "employee exist", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(MainActivity.this,"employee not found", Toast.LENGTH_LONG).show();
}
}
使用以下代码:
DatabaseHelper db = new DatabaseHelper(this);
SqliteDatabase sqlite = db.getReadableDatabase();
EditText edit = findViewById(R.id.edit_text_id);
String edit_string = edit.getText().toString();
Cursor cursor = sqLiteDatabase.query(DatabaseHelper.TABLE_NAME, null, DatabaseHelper.COLUMN_TO_MATCH + "=?", new String[] {edit_string}, null, null, null);
if ( cursor.moveToFirst() && cursor!=null && cursor.getCount()>0) {
Toast.makeText(getApplicationContext(), "Text matches", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(getApplicationContext(), "Text doesnt matches", Toast.LENGTH_LONG).show();
}
是的,您必须查询数据库。当您在正确的位置运行代码时,您发现了什么谢谢您的回答,我尝试了该代码,但出现了错误:错误:不兼容的类型:字符串无法转换为IntuUpdate:我返回到类DatabaseHelper中的原始代码,只更新了MainActivity类,它是这样工作的:)非常感谢你!