2

これによりアプリがクラッシュする理由がわかりません。sqlite で作成されたデータベースをインポートしましたが、そこから情報を読みたいだけです。

これが私のコードです

public class goodwillDatabase {

        private static final String DATABASE_NAME="goodwill";   
        private SQLiteDatabase ourDatabase;

        //set up variables
         static final String candidate_id = "_id"; 
         static final String candidate_name = "name"; 
         static final String candidate_street_address = "email"; 

        //set up the table...store different tables in database 
        private static final String DATABASE_TABLE = "candidate";
        private static final int DATABASE_VERSION = 1;

        //create instance of this class
        //creates, opens and closes database
        private DbHelper ourHelper;

        private final Context ourContext;


        //create database on a different thread

        private static class DbHelper extends SQLiteOpenHelper{

            public DbHelper(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
                // TODO Auto-generated constructor stub

            }

            //first time we ever create database, this is called
            @Override
            public void onCreate(SQLiteDatabase db) {



            }

            //if already created, just update
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion,
                    int newVersion) {
                // TODO Auto-generated method stub

                db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLE);
                onCreate(db);
            }


        }


        public goodwillDatabase(Context c){
            //make context of this class equal to whatever is being passed in
            ourContext = c;

        }

        //opens database
        //sql excpetion for the try catch
        public goodwillDatabase open() throws SQLException{

            //create a new helper, pass in context from the method above
            ourHelper = new DbHelper(ourContext);
            ourDatabase = ourHelper.getWritableDatabase();


            return this;
        }

        //closes the class...sqlite helper, dbhelper
        public void close(){

            ourHelper.close();
        }

        public String getData() {
            // TODO Auto-generated method stub

            //create a new helper, pass in context from the method above


            String [] columns = new String []{ candidate_name, candidate_street_address};


            Cursor d = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);


            String result = " ";
            //String[] result = columns;
            /*

            int iRow = c.getColumnIndex(canadiate_id);
            int iName = c.getColumnIndex(canadiate_name);
            int iStreet = c.getColumnIndex(canadiate_street_address);*/
            /*
            //start at the beginning, keep moving if you haven't made it to the last
            for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
            {
                result = result + c.getString(iRow) + " " + c.getString(iName) + 
            " " + c.getString(iStreet) + "\n";

            }

            */
            return result; 

        }

}

*Cursor d = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); * 行はクラッシュする場所です。カーソルがどこを指すかわからないということですか?私はデータベースやプログラミングに精通しているわけではないので、何か助けていただければ幸いです。

4

1 に答える 1

0

試す

Cursor d = ourDatabase.rawQuery("select name,email from candidate",null);

query と rawQuery は同じ目的を果たしますが、いずれかが機能し、他が機能しない場合があります:(

于 2012-04-24T10:11:28.030 に答える