2014-02-10 5 views
0

Я хотел бы проверить, существует ли какая-либо строка в базе данных Sqlite.Проверка наличия строки 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. Итак, как мне делать то, что я хочу достичь? (Как мне изменить инструкцию insert) Спасибо.

ответ

0

Заменить обижая линию с

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"; 
Смежные вопросы