从SQLite数据库Android中读取

时间:2012-04-13 23:43:48

标签: android database sqlite

我不确定为什么这会导致我的应用崩溃。我已经导入了在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); *线是它崩溃的地方。它是光标不知道指向何处的东西吗?我不是很熟悉数据库或编程,所以你能给我的任何帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:0)

尝试

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

query和rawQuery用于相同的目的,但有时它们中的任何一个都有效,而其他则没有:(