2014-03-30 50 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

相关问题