【问题标题】:Problem facing while inserting data into dynamically created column of table将数据插入动态创建的表列时面临的问题
【发布时间】:2009-03-06 13:51:41
【问题描述】:

我正在使用 alter table 查询通过代码将列动态添加到 db 中的表中。 但是当我试图在该列中插入值时,我遇到了问题。它抛出一个异常列不存在。 我通过 netbeans 清理和重建我的项目,它工作正常。

我使用 java 和 mysql 作为数据库。

有没有人知道这个问题的解决方案。

以下是我的alter table查询代码

     String alterTableQuery ="alter table `test` add `abc` varchar(50) NOT NULL default ''";
     stmt = conn.prepareStatement(alterTableQuery);
     boolean val = stmt.execute();

我正在尝试使用以下代码插入数据。

      String sqlQuery = "insert into `test` (`id`,`abc`) values (?)" ;
      stmt = conn.prepareStatement(sqlQuery);
      boolean val = stmt.execute();

【问题讨论】:

  • 你能发布你的SQL语句吗?
  • 如果可能的话,还要张贴表格的“DESCRIBE ”并指出有问题的列。
  • 你有你的代码示例吗?
  • 你使用的是什么 JDBC 适配器?

标签: java mysql database


【解决方案1】:

您还可以重新考虑您的设计。一般来说,用户界面向表中添加列是一种不好的做法。也许您需要更规范的设计。数据库结构更改不应来自用户。如果不同的用户同时进行更改,您可能会造成真正的混乱。此外,用户不应拥有添加列的安全权限。这对您的系统来说是一个重大风险。

【讨论】:

    【解决方案2】:

    我不了解 Java,但在 .net 中对表执行更改后,您需要调用 dataAdapter.AcceptChanges();这基本上将更改提交到表。

    在您的代码中,您需要在将列添加到表后进行类似的调用,以便插入能够工作。

    【讨论】:

      【解决方案3】:

      这可能是因为数据描述语言 (DDL) 通常在事务之外执行。也许提交/回滚,甚至重新连接都会解决问题。只是猜测。

      【讨论】:

        猜你喜欢
        • 2017-02-16
        • 2010-10-24
        • 1970-01-01
        • 2017-04-11
        • 2019-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-02
        相关资源
        最近更新 更多