3

データベースからユーザー データを取得できるページがありますが、1 日試行した後、テーブルの列名しか取得できず、内部の値は取得できません。

これはデータベースを作成するための私のコードです

 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();

トーストの結果には列名のみが表示され、内部の値は表示されません。間違いはありますか? limit を 1 に設定したいのですが、どこに設定すればよいですか?

私を助けてくれてありがとう

4

3 に答える 3

3

値を読み取ろうとする方法は完全に間違っています。あなたは配列を作成します

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) );
于 2013-05-21T10:13:49.973 に答える
1

ここに私の解決策があります:

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();
于 2016-06-01T10:43:29.613 に答える