2013-04-16 147 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()); 
    } 
相关问题