我正在创建一个使用sql数据库的应用程序,该数据库存储用户在单个列中购买的产品的名称和价格。在我的sql数据库中,我有一个只有3个列的表,id
,userName
和products
。
我希望能够在name
列中存储price
和products
个不同的产品。
例如,假设user1
选择了fish
两个费用200
和meat
费用为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很新,如果之前已经问过这个问题,我很抱歉。我尝试搜索,但答案没有回答我的问题,有些人说你不能在列中存储多个数据,但我确信它可以存储它,如果它将数据库中的所有内容作为文本插入。我只是不知道如何格式化语句,所以我可以轻松删除信息并安排它们如输出
中所示答案 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 ...