在sqlite

时间:2016-03-07 09:22:27

标签: android sqlite

我想将数据添加到sqlite表中。我创建了像这样的字符串数组

String idPriceArray = "1, 2, 3, 4, 5";
String priceSort = "Sort1, Sort2, Sort3, Sort4, Sort5";
String priceGrade = "A, B, C, D, E";
String priceDiameter = "45+, 40+, 35+, 32+, 28+";
String priceLength = "300, 250, 250, 220, 200";
String stumpPrice1 = "1900.00, 1300.00, 700.00, 450.00, 1400.00";
String stumpPrice2 = "248, 170, 144, 91, 59";
String roadPrice1 = "2000.00, 1400.00, 1200.00, 800.00, 550.00";
String roadPrice2 = "261, 183, 157, 104, 72";
String crustDeduction = "4, 4, 3, 3, 2";

然后我将它们传递给像这样的addPrices方法。

public void addPrice() {
        SQLiteDatabase db = this.getWritableDatabase();
        for (int i=0; i < idPriceArray.length(); i++) {
            ContentValues cv = new ContentValues();
            cv.put(PRICE_SORT, priceSort);
            cv.put(PRICE_GRADE, priceGrade);
            cv.put(PRICE_DIAMETER, priceDiameter);
            cv.put(PRICE_LENGTH, priceLength);
            cv.put(PRICE_STUMP_KN, stumpPrice1);
            cv.put(PRICE_STUMP_EUR, stumpPrice2);
            cv.put(PRICE_ROAD_KN, roadPrice1);
            cv.put(PRICE_ROAD_EUR, roadPrice1);
            cv.put(PRICE_CRUST, crustDeduction);
            db.insert(TABLE_PRICE, null, cv);
        }
        db.close();
    }

问题是我在一行中获得了所有种类,等级和其他所有内容。当我在布局中显示它时,我得到这样的结果:
排序:Sort1,Sort2,Sort3 ..
成绩:A,B,C,D,E 但是我希望得到这样的结果:
排序:排序1 成绩:A
都是这样的。
我想知道这样填充表格的正确方法是什么?

编辑:
这是我的getAllPrices方法。我认为这也很好。

  public ArrayList<Price> getAllPrices() {
        ArrayList<Price> priceList = new ArrayList<Price>();
        String selectQuery = "SELECT * FROM " + TABLE_PRICE + " ORDER BY " + PRICE_ID;
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {
                Price price = new Price();
                price.setId(cursor.getLong(0));
                price.setSort(cursor.getString(1));
                price.setGrade(cursor.getString(2));
                price.setDiameter(cursor.getString(3));
                price.setLength(cursor.getString(4));
                price.setStumpPrice_1(cursor.getString(5));
                price.setStumpPrice_2(cursor.getString(6));
                price.setRoadPrice_1(cursor.getString(7));
                price.setRoadPrice_2(cursor.getString(8));
                price.setDeduction(cursor.getString(9));
                priceList.add(price);
            }while (cursor.moveToNext());
        }
        return priceList;
    }

在我的布局中,我创建了一个基本适配器,我在其中显示数据。
难道我还有什么东西搞砸了添加到表格中?

2 个答案:

答案 0 :(得分:1)

您需要先将String拆分为单独的条目。例如:

String[] priceSortArr = priceSort.split(",");
//Repeat for the rest...

public void addPrice() {
    SQLiteDatabase db = this.getWritableDatabase();
    for (int i=0; i < count; i++) {
        ContentValues cv = new ContentValues();
        //Worth calling trim() to remove any leading and trailing white space
        cv.put(PRICE_SORT, priceSortArr[i].trim());
        //etc.
        db.insert(TABLE_PRICE, null, cv);
    }
    db.close();
}

编辑:或者当然,您可以将它们首先写为数组:

 String[] priceSortArr = new String[] { "Sort1", "Sort2", "Sort3", "Sort4", "Sort5" };

答案 1 :(得分:1)

您尚未创建Arrays。您已创建Strings

首先创建像这样的数组 -

String priceSort[] = new String[]{"Sort1", "Sort2", "Sort3", "Sort4", "Sort5"};

为你的所有数组执行此操作。然后在for循环中,在每行中分别插入每个项目。请注意我是如何使用for循环的i值来从数组中获取值的。

for (int i=0; i < idPriceArray.length(); i++) {
        ContentValues cv = new ContentValues();
        cv.put(PRICE_SORT, priceSort[i]);
        cv.put(PRICE_GRADE, priceGrade[i]);
        cv.put(PRICE_DIAMETER, priceDiameter[i]);
        cv.put(PRICE_LENGTH, priceLength[i]);
        cv.put(PRICE_STUMP_KN, stumpPrice1[i]);
        cv.put(PRICE_STUMP_EUR, stumpPrice2[i]);
        cv.put(PRICE_ROAD_KN, roadPrice1[i]);
        cv.put(PRICE_ROAD_EUR, roadPrice1[i]);
        cv.put(PRICE_CRUST, crustDeduction[i]);
        db.insert(TABLE_PRICE, null, cv);
    }

在此之后,你的sql表中最后会有5行,每行对应1个项目。