2016-03-13 40 views
2

我已經從EditText取得了String值。和一個提交查詢的按鈕。Android SQLite查詢(我想解析一般的Sql查詢)

String sql=editQuery.getText().toString();// SELECT * FROM employees 

StringBuffer finalDataq=new StringBuffer(); 

Cursor cur = dbHelper.rawsqlquery(sql); 

for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext()) { 
    finalDataq.append(cur.getInt(cur.getColumnIndex(MyDBHelper.ID))); 
    finalDataq.append(" - "); 
    finalDataq.append(cur.getString(cur.getColumnIndex(MyDBHelper.FIRST_NAME))); 
        finalDataq.append(" - "); 
    finalDataq.append(cur.getString(cur.getColumnIndex(MyDBHelper.LAST_NAME))); 

    finalDataq.append(" - "); 
    finalDataq.append(cur.getString(cur.getColumnIndex(MyDBHelper.ADDRESS))); 

    finalDataq.append(" - "); 
    finalDataq.append(cur.getDouble(cur.getColumnIndex(MyDBHelper.SALARY))); 
        finalDataq.append("\n"); 

} 
submittedQuery.setText(finalDataq); 

rawsqlquery()功能 -

public Cursor rawsqlquery(String sql) { 
    return myDB.rawQuery(sql,null); 
} 

它給我正確的結果。例如,當我從table_name寫入select *時,它返回表中的所有行。

但我想選擇特定的列,我不知道如何去做。我想在editext中編寫我的查詢,並直接想要編譯並得到結果它將返回光標對象(如果我沒有錯) 。那麼如何選擇列名來顯示我的結果,因爲列名是在editText中編寫的。 爲如:SELECT ID,FNAME從員工

預先感謝您

+0

如果有人不明白,那麼我將在註釋中解釋 –

+0

這件事是rawquery wriiten光標對象。如果我想顯示所有列然後它會很容易,但在edittext我怎麼知道哪列顯示。某人幫助這個? –

+2

嘗試'String [] names = cursor.getColumnNames();'然後只獲取這些列的值。 – ELITE

回答

0

嘗試獲得使用cur.getColumnNames();方法

Cursor檢索的列名的for循環中刪除您和使用下面的代碼,而不是

Cursor cur = dbHelper.rawsqlquery(sql); 
String[] names = cur.getColumnNames(); 
while(cur.moveToNext()) { 
    for(String name : names) { 
     finalDataq.append(cur.getString(cur.getColumnIndex(name))); 
     finalDataq.append(" - "); 
    } 
    finalDataq.append("\n"); 
} 
+0

謝謝@ELITE。它正在工作,感謝你 –

+0

好極了...如果這個答案有幫助,那就關閉這個問題。 – ELITE

0

我建議你將所有列名作爲數組取出,並將其設置爲AutoCompleteTextView,爲用戶提供一個選擇菜單。像這裏你有AutoCompleteTextViewactv

actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); 

使用

Cursor dbCursor = mDataBase.query(TABLE_NAME, null, null, null, null, null, null); 
String[] columnNames = dbCursor.getColumnNames(); 

抓取所有的列名,然後設置用戶adapteractv

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,columnNames); 
actv.setAdapter(adapter); 

這樣會得到機會選擇列名。希望能幫助到你。