java - Android - 如何将数据库中的所有值添加到arraylist

标签 java android arrays

我有以下数据库类,我有一个简单的问题... getrecords() 方法仅返回数据库中的名字,即 10 ,我需要的只是将数据库中的所有名称存储到数组列表,即 10 和 100,我该怎么做?我是初学者,所以对这方面的知识不是很多。谢谢您的帮助!

public class Database {

     public static final String KEY_ROWID = "ID";
        public static final String KEY_NAME = "NAME";
        public static final String KEY_HOTNESS = "PLACE";

    private static final String DATABASE_NAME = "Database.db";
    private static final String DATABASE_TABLE = "peopleTable";
    private static final int DATABASE_VERSION = 6;

    private static DbHelper ourHelper;
    private final Context ourContext;
    private static SQLiteDatabase ourDatabase;

    private static class DbHelper extends SQLiteOpenHelper{

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

        @Override //I create it here, right?
        public void onCreate(SQLiteDatabase db) {


             db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                     KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                     KEY_NAME + " TEXT NOT NULL UNIQUE, " +
                     KEY_HOTNESS + " TEXT NOT NULL);"                    
         );                 


            db.execSQL("INSERT INTO " + getDatabaseTable() + "(NAME, PLACE) VALUES('10',' Plantation')");
            db.execSQL("INSERT INTO " + getDatabaseTable() + "(NAME, PLACE) VALUES('100','NR Plantation')");


        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + getDatabaseTable());
            onCreate(db);
        }

        public void close(Database database) {
            // TODO Auto-generated method stub

        }
    }



    public Database(Context c){
        ourContext = c;
    }


    public Database open() throws SQLException{
        ourHelper = new DbHelper(ourContext);
        ourDatabase = ourHelper.getWritableDatabase();
        return this;        
    }

    public void close() {

    ourHelper.close(); 
}

    public static String getDatabaseTable() {
        return DATABASE_TABLE;
    }

    public List<String> getrecords() {
        // TODO Auto-generated method stub
        List<String> arraylist = new ArrayList<String>();
        String[] columns = new String[]{  KEY_NAME };
        Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
        String result = "";



        int iName = c.getColumnIndex(KEY_NAME);


        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
            arraylist.add(c.getString(iName));

            return arraylist;

        }

        return arraylist;
    }

}

最佳答案

Your method should look like this :

public ArrayList<String> getRecords(){
    ArrayList<String> data=new ArrayList<String>();
    Cursor cursor = db.query(DATABASE_TABLE, new String[]{"column names"},null, null, null, null, null);
    String fieldToAdd=null;
    while(cursor.moveToNext()){
       fieldToAdd=cursor.getString(0);
       data.add(fieldToAdd);
    }
    cursor.close();  // dont forget to close the cursor after operation done
    return data;
}

this method will return all field values from database to arraylist

关于java - Android - 如何将数据库中的所有值添加到arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23153750/

相关文章:

java - 使用对象数组调用另一个类的方法

java - 使用 Maven 和 IntelliJ 创建 JSF 项目

android - Android中的虚拟合成器(基于jar) - 原生jni?

android - 如何在android中以编程方式禁用布局及其内容

android - 拦截 HTC sense 上的 ACTION_CALL Intent

java - 将 double 转换为 int,但前提是精确转换

java - jasper 报告中同一页两侧的拆分表

c++ - 了解函数循环中发生的事情

javascript - 如何从 Javascript 中的对象属性连接多个数组?

php - 动态数组再次覆盖