将数据插入动态创建的表列时遇到的问题

时间:2009-03-06 13:51:41

标签: java mysql database

我使用alter table query通过代码动态地将列添加到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();

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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