2014-03-30 22 views
2

我有計數器,它會計算我點擊一個按鈕的次數。爲什麼我的字符串不能像我想要的那樣排序,當我從textview插入值時?

public void onClick(View v) { 

      counter++; 
      text.setText("Score"+counter); 



     } 

然後我插入到我的DB值這個

 text = (TextView) findViewById(R.id.textView1); 
       final String Score = text.getText().toString(); 
       mySQLiteAdapter.openToWrite(); 

       mySQLiteAdapter.insert("sccore="Score); 

       mySQLiteAdapter.close(); 

這是我的插入功能

public long insert(String content){ 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(KEY_CONTENT, content); 
    return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues); 
} 

所以所插入是 - 計數器值>分數= 2,分數= 1 ,分數= 111,分數= 3,分數= 21 < - (其計數器值)

然後我想看到t他在另一個texview所以分數:

mySQLiteAdapter = new SQLiteAdapter(this); 
    /* 
    * Open the same SQLite database 
    * and read all it's content. 
    */ 
    mySQLiteAdapter = new SQLiteAdapter(this); 
    mySQLiteAdapter.openToRead(); 
    String contentRead = mySQLiteAdapter.queueAll(); 
    listContent.setText(contentRead); 
    mySQLiteAdapter.close(); 

我溫控功能queueAll()看起來像:

public String queueAll(){ 
    String[] columns = new String[]{KEY_CONTENT}; 
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, 
      null, null, null, null, KEY_CONTENT+" desc"); 
    String result = ""; 

    int index_CONTENT = cursor.getColumnIndex(KEY_CONTENT); 
    for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){ 
     result = result + cursor.getString(index_CONTENT) + "\n"; 
    } 

    return result; 
} 

確定,在文本視圖中我看到了這一點:

Score = 3 , Score=21 , Score=2 , Score=111, Score=1 

,但我想

score=111, score=21, score=3, score=2, score=1. 

爲什麼順序由DESC沒有排序這像我想在DESC?爲什麼這樣想?爲什麼我插入的計數器值沒有排序DESC?

public static final String MYDATABASE_NAME = "MY_DATABASE"; 
public static final String MYDATABASE_TABLE = "MY_TABLE"; 
public static final int MYDATABASE_VERSION = 1; 
public static final String KEY_CONTENT = "Content"; 

//create table MY_DATABASE (ID integer primary key, Content text not null); 
private static final String SCRIPT_CREATE_DATABASE = 
    "create table " + MYDATABASE_TABLE + " (" 
    + KEY_CONTENT + " text not null);"; 

說實話,我的專欄KEY_CONTENT應該是NUMBER而不是STRING。如何改變這一點? 當我將str更改爲num時,會按照我想要的DESC工作順序進行排序?

+0

感謝一個充分的準備問題。 – Szymon

回答

0

您將您的號碼存儲爲text,以便您按字母排序順序。

您可以將數字轉換成integer當您查詢:

Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, 
     null, null, null, null, "CAST(" + KEY_CONTENT + " as integer) desc"); 
+0

你是一個wizzard:D。它現在有效。 你能告訴我這是如何工作的嗎? 「」CAST(「+ KEY_CONTENT +」爲整數)desc「)」什麼是演員? – Jakozo

+0

@ user3202351它將您的列'Content'(它存儲爲'text')轉換爲'integer'數據類型。由於所有記錄都有一個有效的整數,因此它可以毫無問題地轉換,然後根據數值進行排序。 – Szymon

+0

但是如果我的插入值將是「qweq1qweqweScore = 15」?它會施展什麼? – Jakozo

相關問題