2013-04-29 103 views
1

這是我們從數據庫獲取信息的主要類。我們試圖在我們創建的「條形碼」數據庫中獲取「名稱」列的值。現在,我們無法獲得期望的值,但值爲「a,b,c,d,...」(例如;當我們要求第一個返回「a」時,它返回「b」當我們問第二個在「名稱」列)值與cursor.getString方法android中的getString方法不起作用

public class MainActivity extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      DataBaseHelper myDbHelper = new DataBaseHelper(this); 
      myDbHelper = new DataBaseHelper(this); 
      try { 
       myDbHelper.createDatabase(); 
      } catch (IOException ioe) { 
       throw new Error("Unable to create database"); 
      } 

      try { 
       myDbHelper.openDataBase(); 
      } catch(SQLException sqle){ 
       throw sqle; 
      } 

      Cursor cursor = myDbHelper.getAllAccounts(); 

      String[] values = new String[6]; 
      int i=0; 

      //take into the array from the database 
      while(cursor.moveToNext()){ 
       values[i]= cursor.getString(cursor.getColumnIndex("name")); 
       i++; 
      } 

      cursor.close(); 

      //Write to textview 
      TextView youtextview = (TextView) findViewById(R.id.textView1); 
      youtextview .setText(values[2]); 
     } 
    } 
+2

getString方法不起作用 - 是的。你的代碼顯然不會,但你沒有清楚地描述問題所在。什麼*確切*發生? – Simon 2013-04-29 18:45:14

+0

我的意思是,而不是數據庫中值[2]的值,我剛剛得到值「b」。當我將值[2]更改爲值[1]時,我得到了「a」或值[3],我得到了「c」。在數據庫中我沒有任何數據,比如「a」,「b」或「c」。順便說一下,我在SQLite數據庫瀏覽器中創建了數據庫。我的數據庫看起來像這樣: – user2255446 2013-04-29 19:11:14

+0

它有一個「整數主鍵」的id列和「text」的名稱列。 – user2255446 2013-04-29 19:12:37

回答

0

你是不是在正確的方式用光標處理(還你不應該做DB在主UI線程調用這就是你現在正在做的)。參見:http://developer.android.com/reference/android/database/Cursor.html

static final COL_NAME = "name"; 
Cursor cursor = myDbHelper.getAllAccounts(); 
cursor.moveToFirst(); 
int maxCursorIndex = cursor.getCount(); 
for(int cursorIndex=0;cursorIndex<maxCursorIndex;cursorIndex+=1){ 
    values[cursorIndex] = cursor.getString(cursor.getColumnIndex(COL_NAME); 
} 
cursor.close(); 
+0

你也應該檢查一下,以確保你沒有得到空的遊標。 – Krispy 2013-04-29 18:56:42