2014-02-11 3 views
0

Я новичок в программировании на Android, и я задерживаюсь с возвратом данных из базы данных SQLite и отображением его в своем приложении в TextView/ListView. Я пробовал по-разному, но я просто бегу по кругу. Любые направления приветствуются! Благодарю.Eclipse отображает все элементы из SQLite DB

Main.java:

public void LoadIngredient1() { 
    TestAdapter mDbHelper = new TestAdapter(this);   
    mDbHelper.createDatabase();  
    mDbHelper.open(); 

    // TO DO ?  

    mDbHelper.close(); 
} 

TestAdapter.java:

public Cursor getData() {  
    String sql ="SELECT ID_Ingredient1, Ingredient1, tmp FROM Ingredient_1"; 
    Cursor mCur = mDb.rawQuery(sql, null); 
    if (mCur!=null) 
    { 
    mCur.moveToNext(); 
    } 
return mCur; 
} 
+1

посмотрите на это 'www.androidhive.info/2011/11/android-sqlite-database-tutorial' –

+0

mCur.moveToFirst() - это то, что вы пропустили. Это решит вашу проблему. Попытайтесь это сделать. – San

+0

@MehulJoisar Дело в том, что я следую этому руководству: [link] www.androidhive.info/2011/11/android-sqlite-database-tutorial Я не могу отображать элементы. для (контакт cn: контакты) { Строка log = "Id:" + cn.getID() + ", Name:" + cn.getName() + ", Phone:" + cn.getPhoneNumber(); // Запись контактов в журнал Log.d («Имя:», журнал); Заявление никогда не используется. Я создал базу данных SQLite, скопировал ее в папку с ресурсами и на устройстве. boolean checkDataBase() \t { \t Файл dbFile = новый файл (DB_PATH + DB_NAME); \t Log.v ("dbFile", dbFile + "" + dbFile.exists()); \t return dbFile.exists(); \t} возвращает true. – Moonbeam

ответ

0
public ArrayList<MyDataObject> getData(){ 
    ArrayList<MyDataObject> result = new ArrayList<MyDataObject>(); 
    open database 
    Cursor c = null; 
    try{ 
    c = database.rawQuery("Select * from myDataObjectTable",null); 
    while(c!=null && c.moveToNext()){ 
     MyDataObject object = new MyDataObject(); 

    object.setId(c.getInt(c.getColumnIndex("ID Column"))); 
    object.setName(c.getString(c.getColumnIndex("Name"))); 
    object.setSomething(c.getBoolean(c.getColumnIndex("SOMETHING THERE COLUMN"))); 

    result.add(object); 

    } 

}catch(Exception e){ 
Log.d(TAG,"some error",e); 
} finally{ 

if(c!=null) c.close(); 
} 
    return result; 

    } 
2

Почему вы пытаетесь получить курсор? Я бы просто построить объект return.Here приведен пример кода: TestAdapter.java

public class TestAdapter extends SQLiteOpenHelper { 
     public TestAdapter(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 
     ... 
     public YourObject getData() { 
      YourObject yourObject = new YourObject(); 
      String sql ="SELECT ID_Ingredient1, Ingredient1, tmp FROM Ingredient_1"; 
      SQLiteDatabase mDb = this.getWritableDatabase(); 
      Cursor mCur = mDb.rawQuery(sql, null); 
      if (mCur.moveToFirst()) { 
       yourObject.setId(cursor.getInt(cursor.getColumnIndex(ID_Ingredient1))); 
       yourObject.setIngridient(cursor.getString(cursor.getColumnIndex(ID_Ingredient1))); 
       ... 
      } 
      return yourObject; 
     } 
} 
Смежные вопросы