1

これは、データベースから情報を取得するためのメイン クラスです。作成した「バーコード」データベースの「名前」列の値を取得しようとしています。現在、目的の値を取得することはできませんが、「a、b、c、d、...」の値を取得できます (たとえば、最初の値を要求すると「a」が返され、「b」が返されます)。 「名前」列で2番目のものを要求する場合)cursor.getStringメソッドで値

    public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            DataBaseHelper myDbHelper = new DataBaseHelper(this);
            myDbHelper = new DataBaseHelper(this);
            try {
                myDbHelper.createDatabase();
            } catch (IOException ioe) {
                throw new Error("Unable to create database");
            }

            try {
                myDbHelper.openDataBase();
            } catch(SQLException sqle){
                throw sqle;
            }

            Cursor cursor = myDbHelper.getAllAccounts();

            String[] values = new String[6];
            int i=0;

            //take into the array from the database
            while(cursor.moveToNext()){
                values[i]= cursor.getString(cursor.getColumnIndex("name"));
                i++;
            }

            cursor.close(); 

            //Write to textview
            TextView youtextview = (TextView) findViewById(R.id.textView1);
            youtextview .setText(values[2]);
        }
    }
4

1 に答える 1

0

カーソルを正しい方法で処理していません (また、現在行っているメイン UI スレッドで DB 呼び出しを行うべきではありません)。参照: http://developer.android.com/reference/android/database/Cursor.html

static final COL_NAME = "name";
Cursor cursor = myDbHelper.getAllAccounts();
cursor.moveToFirst();
int maxCursorIndex = cursor.getCount();
for(int cursorIndex=0;cursorIndex<maxCursorIndex;cursorIndex+=1){
    values[cursorIndex] = cursor.getString(cursor.getColumnIndex(COL_NAME);
}
cursor.close();
于 2013-04-29T18:56:09.557 に答える