Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查数据库中的行是否包含特定值_Java_Android_Database_Android Sqlite - Fatal编程技术网

Java 如何检查数据库中的行是否包含特定值

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

我一直在试验SQLite数据库,我想知道您是否可以在数据库中搜索某个值,并将其包含在if语句中,说明数据库中是否存在此值,然后说数据库已经有此值,否则将该值添加到数据库中

数据库:

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 + "'";