如何在Android的Sqlite数据库中使用where子句执行SELECT查询?

问题描述:

如何在android中使用where子句获取SQLite数据库的唯一列。 我想从数据库中获取数值,然后将其与其他数值进行比较,我该怎么办?如何在Android的Sqlite数据库中使用where子句执行SELECT查询?

+0

你有一个数据库模式的例子吗?也许甚至是一个“我想在这个领域捕获这个价值并用它来在这个领域进行搜索”的例子? –

+0

我想捕获存储在字符串中的配置文件值,其中db的mylocation列等于我活动中的currentlocation。 –

有多个步骤来实现这一点。

  1. 通过扩展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); 
} 
} 
  1. 在你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(); 
    } 
    
  2. 最后将此添加到要检索和显示数据的活动中。

    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()); 
         } 
        } 
    
  3. 可能有一些问题与查询的语法,所以我建议你改正和执行。

    希望这会有所帮助!

开始=>
+0

我想在我的意向服务课程中完成所有这些工作 –

+0

您需要向我们展示您到目前为止所尝试的内容。否则,我们将无法帮助您。请更新您的问题到目前为止您尝试的任何内容。 –