2016-02-29 104 views
0

如何在android中使用where子句獲取SQLite數據庫的唯一列。 我想從數據庫中獲取數值,然後將其與其他數值進行比較,我該怎麼辦?如何在Android的Sqlite數據庫中使用where子句執行SELECT查詢?

+0

你有一個數據庫模式的例子嗎?也許甚至是一個「我想在這個領域捕獲這個價值並用它來在這個領域進行搜索」的例子? –

+0

我想捕獲存儲在字符串中的配置文件值,其中db的mylocation列等於我活動中的currentlocation。 –

回答

2

有多個步驟來實現這一點。

  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); 
} 
} 
  • 在你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

    您需要向我們展示您到目前爲止所嘗試的內容。否則,我們將無法幫助您。請更新您的問題到目前爲止您嘗試的任何內容。 –

    相關問題