格式化多个数据以插入sqlite

时间:2017-12-13 20:13:58

标签: java android sqlite

我正在创建一个使用sql数据库的应用程序,该数据库存储用户在单个列中购买的产品的名称和价格。在我的sql数据库中,我有一个只有3个列的表,iduserNameproducts

我希望能够在name列中存储priceproducts个不同的产品。

例如,假设user1选择了fish两个费用200meat费用为500的项目。我希望它像这样插入

INSERT INTO PRODUCT ("[P1: fish,200],[p2: meat, 500]")...

,输出应该如下所示

Name: "user1"

Products:

1. Product name: "fish"
   Product price: "200"

2. Product name: "meat"
   Product price: "500"

我对sql很新,如果之前已经问过这个问题,我很抱歉。我尝试搜索,但答案没有回答我的问题,有些人说你不能在列中存储多个数据,但我确信它可以存储它,如果它将数据库中的所有内容作为文本插入。我只是不知道如何格式化语句,所以我可以轻松删除信息并安排它们如输出

中所示

2 个答案:

答案 0 :(得分:2)

请勿尝试将数据列表放入单个列中。

PRODUCTS表的每一行都应该是列表中的一个元素。

我想说你的数据库应该是这样的:

PRODUCTS
  PURCHASE_ID  | PRODUCT_NAME | PRODUCT_PRICE
  -------------+--------------+--------------
  1            | oatmeal      | 2.49
  1            | eggs         | 0.79
  1            | cereal       | 2.99
  2            | milk         | 1.25
  2            | chicken      | 7.49
  2            | cereal       | 2.99
  3            | energy drink | 4.25


PURCHASES 
  ID | USER_NAME
  ---+----------
  1  | billy bob 
  2  | john smith
  3  | mark brown

在这种情况下,PRODUCTS->PURCHASE_ID是与PURCHASES->ID

配对的外键

获得billy bob购买的产品:

SELECT (PRODUCT_NAME, PRODUCT_PRICE) FROM PRODUCTS WHERE PRUCHASE_ID == 1

答案 1 :(得分:0)

@ Yunnosch的评论和@ xtratic的答案都是有效的。但是如果你不能改变数据库......

使用某些符号(例如逗号)格式化字符串,这可以使解析更容易。然后,当你阅读sting时,很容易使用split(",")将它分成你需要的子串。您可以迭代返回的String[]以查找子字段。

假设您有一个包含查询结果的结果集(rs),

String myInput = product + "," + price.toString();
// Save to database

...

// Query data
String[] myResults = rs.getString(resultColumnIndex).split(",");
String product = myResults[0];
String price = myResults[1];

...
// Format your output ...