如何将String列表放在SQL数据库中?

时间:2011-10-14 19:28:10

标签: android sqlite

我有一个edittext,允许用户输入最多10个数字。

我希望能够将此数字作为字符串列表保存到SQLite数据库中。

SQL允许这样做吗?如果是这样的话?

如     String [] list = {1020300303,1020303001,0102003020};

1 个答案:

答案 0 :(得分:4)

你可以做到,但你将违反规范化规则。

如果将该数组作为单个字符串(以逗号分隔?)保留,则必须对其进行解析以查看单个值。不是个好主意。

规范化架构将使用两个表之间的一对多关系。一个是父,另一个是每个值有一行的子和主/外键关系。您将使用JOIN返回值。

如果您非常想要这样做,那么您必须将数组中的所有字符串连接成一个,在它们之间有一些分隔符,您确定它们绝不会出现在任何字符串中结合。获得单个分隔的String后,将其INSERT到SQLite数据库的表中的String类型列中。

既然你坚持要看一些代码,这就是它在Java中的样子:

String [] list = { "1020300303", "1020303001", "0102003020" };
StringBuilder concatenatedList = new StringBuilder();
for (String s : list) {
    concatenatedList.append(s).append('~'); // Any delimiter will do.
}
PreparedStatement ps = connection.prepareStatement("INSERT INTO MySQLiteTable(stringColumnName) VALUES(?)";
ps.setString(1, concatenatedList.toString());
int numRowsAffected = ps.executeUpdate();

我不会这样写 - 没有清理,没有错误处理,没有良好的封装。但它显示了你想去的地方。