【问题标题】:how to create column in mysql table at runtime如何在运行时在mysql表中创建列
【发布时间】:2012-09-27 08:43:25
【问题描述】:

在我的网络应用程序中,我有一个表单,我根据需要创建动态选择框和文本框(可以超过 1 个),默认有一对选择框和文本框,我的表格有两个用于存储该选择框和文本框的值的列和值正在存储在我的表中,但问题是如果我在表单中添加多对选择和文本框,如何在我的表中存储值?是否可以根据需要在运行时在表中创建列。

【问题讨论】:

  • 不建议在运行时根据用户交互在表中创建新列。在我看来这不是一个好方法
  • 重新考虑现有架构可能比在运行时添加字段更好。
  • 我建议您再创建一列作为 ID,并为每个新创建的文本框关联一个唯一编号,并使用该 ID 和数据列中的数据保存一行。 (这只是一个想法,因为我不知道实际的设计是什么......)

标签: java mysql jsp


【解决方案1】:

如果可以统计文本框和选择框的数量,则可以在运行时使用 sql 的 alter table 查询来动态添加列。

【讨论】:

  • 怎么样?如果我有 3 对选择和文本框,你能指定示例查询吗?
  • 该表包含一些数据,如果我们在运行时更改它的结构,该表中的数据会保持原样吗?
【解决方案2】:

您为应用程序创建了错误的架构。 像这样简单地解决这个尝试模式:

groupid, selectbox, textbox

并将数据存储在更多行中。

例如,如果有 2 对框,则存储两行:

1, 'select', 'text'
1, 'select2', 'text2'

等等。

【讨论】:

    【解决方案3】:

    您可以使用旧的 JDBC 轻松创建;你可以看到an example here。正如其他人所建议的那样,这不是一个合适的设计方法。

    我不知道是否可以使用 JPA,因为表创建是您需要在 persistence.xml 中指定的属性。 JPA 可以自动创建表,但是每次您想要将数据持久保存到现有表时都会丢失所有数据(除非有一些我不知道的覆盖配置参数)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 2014-03-19
      • 1970-01-01
      • 2015-03-19
      • 2011-09-20
      相关资源
      最近更新 更多