【问题标题】:Checking if row exists SQLite检查行是否存在 SQLite
【发布时间】:2014-02-10 13:49:38
【问题描述】:

我想检查 Sqlite 数据库中是否存在任何行。

我的java类

public static final String DATABASE_TABLE2 = "receivernumber";
public static final String KEY_ROWID2 = "hpnumberID2";
public static final String KEY_NAME2 = "hpNumber2";

public long insertContact2(String hpNumber2) 
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_NAME2, hpNumber2);
    if(CheckIsDataAlreadyInDBorNot(0) == true) {

        return db.update(
            DATABASE_TABLE2, initialValues, "SET='"+KEY_NAME2+"'" +"WHERE"+ "KEY_ROWID2="+1, null
        ) > 0;
    }
    else {
        return db.insert(DATABASE_TABLE2, null, initialValues);
    }
    //if there is alrdy a record, create a method to reject intake
    return 0;
}


public boolean CheckIsDataAlreadyInDBorNot(long hpnumberID) {

    Cursor mCursor = db.query(
        true, DATABASE_TABLE2, new String[] {KEY_ROWID, KEY_NAME},KEY_ROWID + "=" + hpnumberID, null, null, null, null, null
    );
    String Query = "Select * from " + DATABASE_TABLE2 + " where " + KEY_ROWID2 + " < " + 0;
    SQLiteDatabase sqldb = EGLifeStyleApplication.sqLiteDatabase;
    Cursor cursor = sqldb.rawQuery(Query, null);     

    if(cursor.getCount<=0) return false;

    return true;
}


public boolean updateContact2(long hpnumberID2, String hpNumber2) 
{
    ContentValues args = new ContentValues();
    args.put(KEY_NAME2, hpNumber2);

        //args.put(KEY_NAME3, Selected);
        //return db.update(DATABASE_TABLE2, args, KEY_ROWID2 + "=" + hpnumberID2, null) > 0;
        //db.execSQL("UPDATE " + DATABASE_TABLE2 + " SET " + KEY_NAME2 + " WHERE " +   KEY_ROWID2 + "=1 ");

    return db.update(DATABASE_TABLE2, args, "SET='" + KEY_NAME2 + "'" + "WHERE" + "KEY_ROWID2=" + 1, null) > 0;
}

所以我的数据库布局是这样的,用户第一次只能添加一个数字。随后用户希望添加一个数字,它将被一个编辑功能代替。但是,有一个名为 EGLifeStyleApplication 的错误无法解析为变量。然而,由于这是成功解决问题的答案,他们并没有真正解释 EGLifeStyleApplications 的功能是什么。那么我该如何去做我想要实现的目标呢? (如何编辑我的插入语句)谢谢。

【问题讨论】:

    标签: java android sqlite insert query-string


    【解决方案1】:

    将有问题的行替换为

    sqldb = ctx.openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null);
    

    其中 ctx 是一个上下文,您将作为参数传递给您的 CheckIsDataAlreadyInDBorNot 方法。即:

    public boolean CheckIsDataAlreadyInDBorNot(Context ctx, long hpnumberID) {
    

    而 DB_NAME 是一个包含您的数据库名称的字符串,即:

    private final static String DB_NAME = "rec_nums.db";
    
    public static final String DATABASE_TABLE2 = "receivernumber";
    public static final String KEY_ROWID2 = "hpnumberID2";
    public static final String KEY_NAME2 = "hpNumber2";
    

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2013-09-26
      • 2015-01-20
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多