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 回答