2017-02-17 8 views
0

行が存在する場合、どのようにsqlite dbをチェックできますか? sqliteのDBを実施する上で、私のスタイルは、例えば、このこの種のsqlite dbを実装する行が存在するかどうかを確認します。

public class EmployeeDBController extends SQLiteOpenHelper { 

    public EmployeeDBController(Context applicationcontext) { 
     super(applicationcontext, "registeruser.db", null, 1); 

    } 

    public SQLiteDatabase db; 
    //Creates Table 
    @Override 
    public void onCreate(SQLiteDatabase database) { 
     String query; 
     query = "CREATE TABLE register (userId INTEGER PRIMARY KEY, Name text, Age text, Gender text," + 
       "HomeAddress text, Password text, QRID text, udpateStatus TEXT)"; 
     database.execSQL(query); 
    } 
    @Override 
    public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) { 
     String query; 
     query = "DROP TABLE IF EXISTS register"; 
     database.execSQL(query); 
     onCreate(database); 
    } 
} 

のようなものです:私は、sqliteのDBに「ジョン」を有する「名前」があるかどうかを確認したいです。

+0

はい、私は申し訳ありませんが、私の質問は明らかではない、ということ行っている、私は[テーブル] SELECT * FROMを持っていますWHERE [列名] = [何か]ですが、たくさんの書式があるので、次に何をすべきか分かりません。私はそれの価値を得るためにカーソルを行う必要がありますか? @MarkKeen –

+0

@ johnedgarotom私の答えは –

+0

@MarkKeenはい、それは動作しますが、生のクエリを好きではない理由を教えてくださいできますか? –

答えて

0

この方法を使用してください!

public boolean isRowExist(/*YOUR_INPUTS*/){ 
    try { 
     db = mDBHelper.getReadableDatabase(); 
     String selectQuery = YOUR_SEARCH_QUERY_STATMENT 
     //You should use YOUR_INPUTS to create a selectQuery that can select the row/rows for you 

     Cursor c = db.rawQuery(selectQuery, null); 
     if(c.getCount()>=1){ 
      c.close(); 
      return true; 
     } 
     c.close(); 
     return false; 
    } catch (Exception e) { 
     return false; 
    } 
} 
+0

ありがとうございます@AtefHares、私は試してみます –

1

カーソルの周りマックすることを避けるためにhelper functionがあります:

public boolean rowExists(String table, String column, String value) { 
    long count = DatabaseUtils.queryNumEntries(db, 
      table, column+" = ?", new String[]{ value }); 
    return count > 0; 
} 
関連する問題