检查数据库android中是否存在记录

我想检查SQLite数据库中是否存在记录,这是我到目前为止所做的。 当我搜索已经存在的记录时,我从列表中的EditText获取值。

//code from activity class public View.OnClickListener searchStation = new View.OnClickListener() { @Override public void onClick(View v) { arrayAdapterList=new ArrayAdapter(SearchAndReview.this, android.R.layout.simple_list_item_1, list); String searchTextFinal=searchText.getText().toString(); dbms.searchStation(searchTextFinal); Cursor cursor= dbms.searchStation(searchTextFinal); list.add(searchTextFinal); arrayAdapterList= new ArrayAdapter(SearchAndReview.this, android.R.layout.simple_list_item_1, list); listView.setAdapter(arrayAdapterList); } }; 

//来自databasehelper类的代码

  public Cursor searchStation(String name){ SQLiteDatabase database = this.getWritableDatabase(); String searchStationQuery = "SELECT stationName FROM review WHERE stationId='"+ name+"'"; Cursor c =database.rawQuery(searchStationQuery,null); if (c != null && c.moveToFirst()) { } return c; } 

我在我的应用程序中使用此代码,它可以实现…

 LoginActivity.java DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext()); String email_id = email.getText().toString(); boolean dbHelper.isExist(email_id); // if record is exist then it will return true otherwise this method returns false 

使用rawQuery

  public boolean isExist(String strEmailAdd) { db = this.getReadableDatabase(); cur = db.rawQuery("SELECT * FROM " + USER_TABLE + " WHERE email_id = '" + strEmailAdd + "'", null); boolean exist = (cur.getCount() > 0); cur.close(); db.close(); return exist; } 

使用db.query

 public boolean isExist(String strEmailAdd){ String whereClause = "email_id = ?"; String[] whereArgs = new String[]{strEmailAdd}; db = database.getWritableDatabase(); cur = db.query(USER_TABLE, null, whereClause, whereArgs, null, null, null); boolean exist = (cur.getCount() > 0); cur.close(); db.close(); return exist; } 

从表中选择一行,是否得到结果=它存在,否则不存在。

 public boolean doesStationExist(String name){ final String query = "SELECT stationName FROM review WHERE stationId='"+name+"' LIMIT 1"; try (SQLiteDatabase database = getReadableDatabase(); Cursor c = database.rawQuery(query, null)) { return c.moveToFirst(); } } 

顺便说一下,从rawQuery返回的游标永远不会为null

编辑:

一旦try块完成,更新的代码将关闭数据库和光标。 这称为try-with-resources。

DatabaseManager.java

 public Cursor checkFavourites() { String query="select * from "+DATABASE_TABLE; Cursor cursor=db.rawQuery(query,null); return cursor; } 

MainActivity.java

 public void favourite_Click(View view){ Cursor cursor=dbManager.checkFavourites(); if (cursor.getCount()>0) { Toast.makeText(MainActivity.this, "Favourites", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this,"Nothing in favourites yet", Toast.LENGTH_SHORT).show(); } }