检查数据库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(); } }