如何在Android的Sqlite数据库中使用where子句执行SELECT查询?
问题描述:
如何在android中使用where子句获取SQLite数据库的唯一列。 我想从数据库中获取数值,然后将其与其他数值进行比较,我该怎么办?如何在Android的Sqlite数据库中使用where子句执行SELECT查询?
答
有多个步骤来实现这一点。
- 通过扩展
SQLiteOpenHelper
类创建一个类。提及数据库名称,表名,所有列名以及创建和删除语句。
AndroidOpenDbHelper:
public class AndroidOpenDbHelper extends SQLiteOpenHelper implements BaseColumns{
public static final String DB_NAME = "Test_DB";
public static final int DB_VERSION = 2;
public static final String TABLE_NAME_TEST = "Test_Table";
public static final String COLUMN_NAME_LOC = "Location";
public static final String COLUMN_NAME = "Name";
public static final String TEXT_TYPE = " TEXT";
public static final String COMMA_SEP = ",";
public static final String SQL_CREATE_TABLE = "CREATE TABLE "+AndroidOpenDbHelper.TABLE_NAME_TEST+" ("+AndroidOpenDbHelper._ID+" INTEGER PRIMARY KEY"+COMMA_SEP+AndroidOpenDbHelper.COLUMN_NAME_LOC+TEXT_TYPE+COMMA_SEP+AndroidOpenDbHelper.COLUMN_NAME+TEXT_TYPE+")";
public static final String SQL_DROP_TABLE = "DROP TABLE IF EXISTS "+AndroidOpenDbHelper.TABLE_NAME_TEST;
public AndroidOpenDbHelper(Context context)
{
super(context,DB_NAME,null,DB_VERSION);
}
public void onCreate(SQLiteDatabase db)
{
db.execSQL(SQL_CREATE_TABLE);
}
public void onUpgrade(SQLiteDatabase db, int OldVersion, int NewVersion)
{
db.execSQL(SQL_DROP_TABLE);
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
onUpgrade(db, oldVersion, newVersion);
}
}
-
在你MainActivity,调用此类初始化数据库和表。
try { AndroidOpenDbHelper openDbHelperObj = new AndroidOpenDbHelper(this); SQLiteDatabase sqLiteDatabase = openDbHelperObj.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(AndroidOpenDbHelper.COLUMN_NAME_LOC,Location); contentValues.put(AndroidOpenDbHelper.COLUMN_NAME,Name); long affectedRowId = sqLiteDatabase.insert(AndroidOpenDbHelper.TABLE_NAME_TEST,null,contentValues); sqLiteDatabase.close(); }catch(Exception err) { err.printStackTrace(); }
-
最后将此添加到要检索和显示数据的活动中。
public static final String SQL_SELECT_QUERY = "SELECT * FROM "+AndroidOpenDbHelper.TABLE_NAME_TEST+" WHERE "+AndroidOpenDbHelper.COLUMN_NAME_LOC = +'Location'; AndroidOpenDbHelper queryDbHelperObj = new AndroidOpenDbHelper(this); SQLiteDatabase sqLiteDatabase = queryDbHelperObj.getReadableDatabase(); Cursor cursor = sqLiteDatabase.rawQuery(SQL_SELECT_QUERY,null); if(cursor != null) { if(cursor.moveToFirst()) { do { String Location= cursor.getString(cursor.getColumnIndex("Location")); String DestinationDB = cursor.getString(cursor.getColumnIndex("Name")); }while(cursor.moveToNext()); } }
可能有一些问题与查询的语法,所以我建议你改正和执行。
希望这会有所帮助!
+0
我想在我的意向服务课程中完成所有这些工作 –
+0
您需要向我们展示您到目前为止所尝试的内容。否则,我们将无法帮助您。请更新您的问题到目前为止您尝试的任何内容。 –
你有一个数据库模式的例子吗?也许甚至是一个“我想在这个领域捕获这个价值并用它来在这个领域进行搜索”的例子? –
我想捕获存储在字符串中的配置文件值,其中db的mylocation列等于我活动中的currentlocation。 –