Java 如何检查数据库中的行是否包含特定值
我一直在试验SQLite数据库,我想知道您是否可以在数据库中搜索某个值,并将其包含在if语句中,说明数据库中是否存在此值,然后说数据库已经有此值,否则将该值添加到数据库中 数据库:Java 如何检查数据库中的行是否包含特定值,java,android,database,android-sqlite,Java,Android,Database,Android Sqlite,我一直在试验SQLite数据库,我想知道您是否可以在数据库中搜索某个值,并将其包含在if语句中,说明数据库中是否存在此值,然后说数据库已经有此值,否则将该值添加到数据库中 数据库: public class DatabaseHandler extends SQLiteOpenHelper { private static final int DB_VERSION = 1; private static final String DB_NAME = "License.db"; private s
public class DatabaseHandler extends SQLiteOpenHelper
{
private static final int DB_VERSION = 1;
private static final String DB_NAME = "License.db";
private static final String TABLE_LICENSE = "License";
private static final String DB_ID = "_id";
private static final String DB_License = "LicenseNum";
public DatabaseHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DB_NAME, factory, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "Create Table " + TABLE_LICENSE + "(" +
DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT " +
DB_License + " TEXT " +
");";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXIST" + TABLE_LICENSE);
onCreate(db);
}
public void addLicense(Licenses license) {
ContentValues values = new ContentValues();
values.put(DB_License, license.get_License());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_LICENSE, null, values);
db.close();
}
public String databaseToString() {
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_LICENSE + " WHERE 1";
Cursor c = db.rawQuery(query, null);
c.moveToFirst();
while (!c.isAfterLast()){
if (c.getString(c.getColumnIndex("LicenseNum"))!= null){
dbString += c.getString(c.getColumnIndex("LicenseNum"));
dbString += "/n";
}
}
db.close();
return dbString;
}
public Cursor contain(String Num){
SQLiteDatabase db = getReadableDatabase();
return db.rawQuery(Num, null);
}
}
代码(Class=“许可证”):
代码(Class=“牌照”):
public class牌照扩展应用程序活动{
公共静态编辑文本许可证;
公共静态按钮组;
公共静态字符串[]PlateNum=新字符串[1000];
私有文本视图LPN3;
私有文本视图LPN2;
专用按钮seedb;
私有文本视图数据库表;
私人按钮返回;
私有数据库处理程序dbHandler;
语境;
SQLiteDatabase.CursorFactory工厂;
String name=“License.db”;
int版本=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u license\u plate);
许可=(EditText)findViewById(R.id.LPN);
Set=(按钮)findViewById(R.id.Set);
seedb=(按钮)findviewbyd(R.id.seedb);
dbHandler=新的DatabaseHandler(上下文、名称、工厂、版本);
}
公共void Onclickone(视图五){
试一试{
String Plate=License.getText().toString().toUpperCase().trim();
字符串Extra=Plate+“已添加到您的数组”;
字符串Extra2=Plate+“已经是您的车牌的一部分”;
String query=“从许可证中选择*,其中名称=”+车牌+”;
if(dbHandler.contain(query).getCount()<0&&Plate.length()>=1
&&Plate.length()0和&Plate.length()
>=1&&Plate.length()您已经有了一个SELECT
子句,但它是错误的,所以更改:
String query = "Select * From License where name = '" + Plate + "'";
致:
String query = "Select * From License where LicenseNum = '" + Plate + "'";
虽然硬编码列名和表名不是一个好的做法
如果此语句未返回任何行,则表中不存在标牌
dos。请检查。发布您尝试的代码现在我得到了我刚才在问题中发布的错误?
String query = "Select * From License where name = '" + Plate + "'";
String query = "Select * From License where LicenseNum = '" + Plate + "'";