【问题标题】:Saving SQLite list as an array: Not Working [duplicate]将 SQLite 列表保存为数组:不工作 [重复]
【发布时间】:2015-03-23 05:58:48
【问题描述】:

我有一个 SQLite 数据库,其中一列存储包含数字的字符串。我正在尝试检索数字,将它们作为双精度数存储在数组中,然后取数组的平均值。但是,它不起作用。每次我到达那部分时,应用程序都会崩溃。我知道问题必须在数组中的某个地方,因为我能够将 SQLite 数据库列为字符串。

public int getDataCount() {
    String countQuery = "SELECT * FROM " + TABLE_PRODUCTS + " WHERE 1";
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(countQuery, null);
    int cnt = cursor.getCount();
    cursor.close();
    return cnt;
}


public double databaseAverage(){
    String dbString = "";
    int dbInt = 0;
    double dbDouble = 0;

    SQLiteDatabase db = getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_PRODUCTS + " WHERE 1";

    Cursor c = db.rawQuery(query, null);
    c.moveToFirst();

    int rowCount = getDataCount();

    Double[] array = new Double[rowCount];
    int i = 0;

    while (!c.isAfterLast()) {
        if (c.getString(c.getColumnIndex("productname")) != null) {
            dbString += c.getString(c.getColumnIndex("productname"));

            dbInt = Integer.parseInt(dbString.replaceAll("[\\D]",""));


            dbDouble = (double) dbInt;


            array[i] = dbDouble;
            i++;

        }
        c.moveToNext();
    }
    db.close();


    double sum = 0;

    for(int v=0; v < array.length ; v++) {
        sum = sum + array[i];
    }

    double average = sum / array.length;

    return average;

}

【问题讨论】:

  • 我忘了在上面提到这一点,但我在 Android Studio 中将它用于 Android 应用项目。
  • 请发布您的日志。
  • 这是什么意思其中一列存储包含数字的字符串。我正在尝试检索数字,将它们作为双精度数存储在数组中

标签: java android sql arrays sqlite


【解决方案1】:

请检查您的语法:

String query = "SELECT * FROM " + TABLE_PRODUCTS + " WHERE 1";

虽然应该是:

字符串查询 = "SELECT * FROM " + TABLE_PRODUCTS + " WHERE "+ {您的列名}+"=1";

getDataCountdatabaseAverage 方法中检查上述查询

【讨论】:

  • 查询语法正确吗?
猜你喜欢
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
相关资源
最近更新 更多