2013-04-16 188 views
0

我想從我的數據庫中獲取一些數據,這些數據是使用我的應用程序創建的。這裏是我的代碼如何從Android中的SQLite數據庫獲取數據

protected void onCreate(Bundle savedInstanceState){ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.select_to_delete); 

database = new DatabaseHandler(this); 

bundle = getIntent().getExtras(); 
date = bundle.getString("DATE"); 

SQLiteDatabase db=database.getWritableDatabase(); 

Cursor cur=db.rawQuery("SELECT " +TITLE+ " FROM " +TABLE_NAME + " WHERE " + CDATE + "=" + date,null); 


int i = cur.getCount(); 


if(cur !=null){ 
    if (cur.moveToFirst()){ 
      do{ 
       tdate = cur.getString(cur.getColumnIndex("DATE")); 
       titlearray.add(tdate); 
      }while(cur.moveToNext()); 
     } 

} 

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

ListView listView = (ListView) findViewById(R.id.listView1); 
listView.setAdapter(adapter); 
} 

我的表有5列(標識,標題,日期,時間,descrption)。並有4個原料。 該表在另一個類中創建。

當我運行這個應用程序時,它不會從sql表中獲取數據並在listview中顯示它。當我調試它時,它顯示i=1,它返回false到if (cur.moveToFirst())。所以它不會進入if部分。

我的錯誤是什麼?

+0

如果你想現有的數據庫,按照此: http://stackoverflow.com/questions/9109438/如何使用現有的數據庫與Android應用程序/ 9109728#9109728 –

回答

1

地方引號(')在你的日期

Cursor cur=db.rawQuery("SELECT " +TITLE+ " FROM " +TABLE_NAME + " WHERE " + CDATE + "='" + date+"'",null); 

注:我假設你的表格創建和其他字段名稱是準確的。此外複檢那些

+1

它的工作。謝謝 – Ravindu

+0

歡迎:) – stinepike

1

選擇使用指定參數和你會避免噸的問題:

Cursor cur=db.rawQuery("SELECT " +TITLE+ " FROM " +TABLE_NAME + " WHERE " + CDATE + " = ?", new String[] { date }); 
+0

有什麼區別?那新的String []是什麼? – Ravindu

+0

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String,java.lang.String []) –

0
SQLiteDatabase db = this.getReadableDatabase(); 

     Cursor cursor = db.query(TABLE_NAME, new String[] { TITLE}, CDATE + "=?", 
       new String[] { String.valueOf(date) }, null, null, null, null); 
     if (cursor.moveToFirst()) { 
     do { 
      //add to the array 
     } while (cursor.moveToNext()); 
    } 
相關問題