2013-09-24 5 views
1

Вот мой короткий код. Я вставляю 10 строк в таблицу, но после полного цикла почему у меня такая же визуализация, как «0 Net 0» десять раз? // Структура таблицыКак вставить данные в базу данных Sqlite с помощью Loop?

String creater = "CREATE TABLE IF NOT EXISTS est (ID INTEGER PRIMARY KEY AUTOINCREMENT,codigo VARCHAR(10)," 
    + "produto VARCHAR(1000), " 
    + "qtd VARCHAR(10)) "; 
    sql.execSQL(creater); 

// Цикл вставки

for(int i=0;i<10;i++) 
    { 
    ContentValues values=new ContentValues(); 
    values.put("codigo", String.valueOf(i)); 
    values.put("produto", "Net"); 
    values.put("qtd", String.valueOf(i)); 
    sql.insert("est", null, values); 
    } 

// ArrayList

public ArrayList<String> estoque(SQLiteDatabase sql) 
    { 
    ArrayList<String> lst = new ArrayList<String>(); 
    try{ 
    String cmd ="select * from est"; 
    Cursor c = sql.rawQuery(cmd,null); 
    c.moveToFirst(); 
    int i=0; 
    while(c.getCount() > i) 
    { 
    lst.add(c.getString(1)+"|"+c.getString(2)+"|"+c.getString(3)); 
    i++; 
    } 
    }catch(Exception ex){Log.e("ERROR", ex.getStackTrace().toString());} 
    return lst; 
    }; 

// ListView

ListView listview =(ListView)findViewById(R.id.listview); 
ArrayList<String> estoque = new db().estoque(sql); 
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_1, estoque); 
adapter1.setDropDownViewResource(android.R.layout.simple_list_item_1); 
listview.setAdapter(adapter1); 

// визуализация "0 Net 0" 10 раз такой же. есть что-то неправильно, пожалуйста, помогите?

+0

Где визуализировать данные? –

+0

Строка cmd = "select * from est"; Курсор c = sql.rawQuery (cmd, null); c.moveToFirst(); int i = 0; while (c.getCount()> i) { lst.add (c.getString (1) + "|" + c.getString (2) + "|" + c.getString (3)); i ++; } // Я получаю все записи как этот код – user2769236

+0

Пожалуйста, отредактируйте ваш вопрос и добавьте эту информацию. В комментарии трудно прочитать много кода. –

ответ

1

В вашем цикле while, где вы читаете из базы данных (до или после увеличения переменной i), вы должны позвонить c.moveToNext();. В противном случае вы снова и снова читаете одну и ту же строку.

The documentation states:

public abstract boolean moveToNext() 
Move the cursor to the next row. 
This method will return false if the cursor is already past the last entry in the result set. 

Returns 
    whether the move succeeded. 
+1

+1! Nice catch =) –

+0

V v спасибо, сэр !!! – user2769236

Смежные вопросы