Java 格式化多个数据以插入sqlite中的单个列中
我正在制作一个应用程序,它使用一个sql数据库,将用户购买的产品的名称和价格存储在一列中。在我的sql数据库中,我有一个只有3列的表,分别是Java 格式化多个数据以插入sqlite中的单个列中,java,android,sqlite,Java,Android,Sqlite,我正在制作一个应用程序,它使用一个sql数据库,将用户购买的产品的名称和价格存储在一列中。在我的sql数据库中,我有一个只有3列的表,分别是id、userName和产品 我希望能够在产品列中存储不同产品的名称和价格 例如,假设一个user1选择了两个项目,一个是fish,花费200,另一个是meat花费500。我希望它像这样插入 INSERT INTO PRODUCT ("[P1: fish,200],[p2: meat, 500]")... Name: "user1" Products:
id
、userName
和产品
我希望能够在产品
列中存储不同产品的名称
和价格
例如,假设一个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"
输出应该是这样的
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非常陌生,如果以前有人问过这个问题,我很抱歉。我尝试过搜索,但答案没有回答我的问题,有人说你不能在一列中存储多个数据,但我确信如果它将数据库中的所有内容都作为文本插入,它可以存储这些数据。我只是不知道如何设置语句的格式,这样我就可以轻松地删除信息,并按照输出中所示的方式排列它们 相反,
产品
表的每一行都应该是列表中的一个元素
我认为您的数据库应该如下所示:
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\u ID
是一个外键,与PURCHASES->ID
要获得billy bob购买的产品:
SELECT (PRODUCT_NAME, PRODUCT_PRICE) FROM PRODUCTS WHERE PRUCHASE_ID == 1
不要试图将数据列表放在一列中 相反,
产品
表的每一行都应该是列表中的一个元素
我认为您的数据库应该如下所示:
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\u ID
是一个外键,与PURCHASES->ID
要获得billy bob购买的产品:
SELECT (PRODUCT_NAME, PRODUCT_PRICE) FROM PRODUCTS WHERE PRUCHASE_ID == 1
@Yunnosch的评论和@xtratic的回答都是正确的。但是如果你不能改变数据库 使用一些符号格式化字符串,例如逗号,这可以使解析更容易。然后,当您阅读sting时,很容易将其划分为需要使用的子字符串。您可以迭代返回的
字符串[]
以查找子字段
假设您有一个包含查询结果的结果集(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 ...
@Yunnosch的评论和@xtratic的回答都是正确的。但是如果你不能改变数据库 使用一些符号格式化字符串,例如逗号,这可以使解析更容易。然后,当您阅读sting时,很容易将其划分为需要使用的子字符串。您可以迭代返回的
字符串[]
以查找子字段
假设您有一个包含查询结果的结果集(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 ...
我认为这是不可能的,但是为什么不
将值('fish','200'),('meat','500')插入表1(名称,价格)
尝试在数据库表中的单个列中存储的字符串中创建数据库不是一个好的设计。换言之,将不同的信息存储在适当声明的专用列中。在纯SQLite中从单个字符串解析这四个信息是可能的,但非常可怕。请更改为多对一关系设计。请看xtratic的答案。好的,我会调查一下。谢谢@YunnoschI,我不认为这是可能的,但是为什么不插入表1(名称、价格)值('fish','200'),('meat','500')
尝试在数据库表中的一个列中存储的字符串中创建数据库不是一个好的设计。换言之,将不同的信息存储在适当声明的专用列中。在纯SQLite中从单个字符串解析这四个信息是可能的,但非常可怕。请更改为多对一关系设计。请看xtratic的答案。好的,我会调查一下。谢谢@YunnoschThanks的回答。我将研究为产品制作一个单独的元素,并分配一个外键。如果我能找到代码来帮助我做到这一点,我将非常感激。我使用了这种方法。谢谢你的帮助谢谢你的回答。我会考虑为产品制作一个单独的元素并分配一个外键。如果我能找到代码来帮助我做到这一点,我将非常感激。我使用了这种方法。谢谢你的帮助是的,这就是问题所在。我无法更改数据库。数据库只允许我在仔细查看数据结构后在一列中输入整个产品详细信息。这对我来说不起作用,因为单独使用表中的详细信息会让我感到更紧张。正如前面的答案所支持的,最好使用一个单独的表来保存这些详细信息,并将它们存储在外键下,因为这大大提高了数据的易用性和多功能性。但是谢谢你的帮助。你的回答是我所要求的,而不是我真正应该做的。是的,这就是问题所在。我无法更改数据库。数据库只允许我在仔细查看数据结构后在一列中输入整个产品详细信息。这对我来说不起作用,因为单独使用表中的详细信息会让我感到更紧张。正如前面的答案所支持的,最好使用一个单独的表来保存这些详细信息,并将它们存储在外键下,因为这大大提高了数据的易用性和多功能性。但是谢谢你的帮助。你的回答是我所要求的,而不是我真正应该做的