我想将数据添加到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;
}
在我的布局中,我创建了一个基本适配器,我在其中显示数据。
难道我还有什么东西搞砸了添加到表格中?
答案 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个项目。