2013-05-21 9 views
2

У меня есть страница, которая может извлекать пользовательские данные из базы данных , но после целого дня попытки я могу получить только имя столбца таблицы, но не значение внутри.Получить данные из базы данных Android

это мой код, чтобы создать базу данных

public static final String LASTLOGIN = "lastuser"; 
public static final String USER_ID = "suser_id"; 
public static final String USER_NAME = "suser_name"; 
public static final String USER_PASSWORD = "spassword"; 
public static final String PRIME_ID = "id"; 

private static final String TABLE_USER = 
     "create table "+ LASTLOGIN+" (" 
     +PRIME_ID+" integer primary key autoincrement, " 
     + USER_ID + " text, " 
     + USER_NAME +" text, " 
     +USER_PASSWORD+" text); "; 

и здесь функция реализована для получения пользовательских данных

public Cursor getuser() 
{ 
    String[] columns = new String[]{PRIME_ID, USER_NAME, USER_PASSWORD}; 
    Cursor cursor = sqLiteDatabase.query(
      LASTLOGIN, columns, null, null, null, null, PRIME_ID +" DESC"); 
    Log.d("TAG", columns[1]); 
    return cursor; 
} 

и вот мой код, чтобы отобразить результат

mySQLiteAdapter = new SQLiteAdapter(this); 
mySQLiteAdapter.openToWrite(); 

cursor = mySQLiteAdapter.getuser(); 
String[] resultvalue = new String{ 
     SQLiteAdapter.PRIME_ID,SQLiteAdapter.USER_NAME, SQLiteAdapter.USER_PASSWORD}; 
Toast.makeText(this, resultvalue[0]+resultvalue[1], Toast.LENGTH_LONG).show(); 

и результат тоста отображает только имя столбца, но не значение внутри, есть ли какая-либо ошибка, которую я сделал? и я хочу установить ограничение на 1, но где его установить?

Спасибо за помощь мне

ответ

2

так, как вы пытаетесь читать значения Абсолютно неправильно. вы создаете массив

String[] resultvalue = new String[]{ 
         SQLiteAdapter.PRIME_ID, 
         SQLiteAdapter.USER_NAME, 
         SQLiteAdapter.USER_PASSWORD}; 

после этого прочитать значения 0 и 1 из этого массива. Ваш тост работает абсолютно правильно, потому что внутри этого массива вы определяете имена столбцов!

Если вы хотите, чтобы показать значения из вашего запроса сделать это следующим образом:

while(cursor.moveToNext()){ 
      Integer str1 = str 1 + cursor.getInteger(1); 
      String str2 =str2 + cursor.getString(2); 
     Toast.makeText(this, str1 + str2, Toast.LENGTH_LONG).show(); 
    } 

или лучшим способом приема правильного индекса:

cursor.getInteger(cursor.getColumnIndex(SQLiteAdapter.PRIME_ID)); 
cursor.getString(cursor.getColumnIndex(SQLiteAdapter.USER_NAME)); 
+0

Спасибо! он работает ~ Только «cursor.getInteger» должен измениться на «cursor.getInt» – Sunny

2

Обратите внимание при извлечении данных из базы данных , вы храните его в курсор в памяти и, следовательно, можете обращаться к нему только с помощью этого объекта Cursor, который вы использовали в следующей строке кода.

Cursor cursor = mySQLiteAdapter.getuser(); 

Следующая строка извлекает имена столбцов, а не значения.

String[] resultvalue = new String[]{SQLiteAdapter.PRIME_ID,SQLiteAdapter.USER_NAME, SQLiteAdapter.USER_PASSWORD}; 

Так следующий делает то, что вы попросили его сделать, получить имена столбцов не значение

Toast.makeText(this, resultvalue[0]+resultvalue[1], Toast.LENGTH_LONG).show(); 

Вам нужно что-то вроде следующий:

if(cursor.getCount() != 0) 
{ 
     while(cursor.moveToNext()) 
     { 

        resultvalue [0] = csr.getString(0); 
        resultvalue [1] = csr.getString(1); 
        //.... 
     } 
} 

Надеется, что это помогает

+1

спасибо, ваш правильный ответ слишком ~ извините за не может сделать вас обоих правильным ответом – Sunny

0

вот мое решение:

final String TABLE_NAME = "table_name"; 
String selectQuery = "SELECT Column FROM "+TABLE_NAME+" WHERE column='"+some_value+"'"; 
SQLiteDatabase db = this.openDatabase(); 
Cursor cursor  = db.rawQuery(selectQuery, null); 
String[] data  = new String[cursor.getCount()];; 
int i = 0; 

if (cursor.moveToFirst()) { 
    do { 
     i=Integer.parseInt(cursor.getString(cursor.getColumnIndex("value"))); 
    } while (cursor.moveToNext()); 
} 
cursor.close(); 
Смежные вопросы