我使用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();
答案 0 :(得分:1)
您也可以重新考虑您的设计。通常,用户界面向表添加列是一种不好的做法。也许你需要一个更规范化的设计。数据库结构更改不应来自用户。如果不同的用户同时进行更改,您可能会创建一个真正的混乱。此外,用户不应具有添加列的安全权限。这是您系统的主要风险。
答案 1 :(得分:0)
我不了解Java但是在.net上执行更改之后需要调用dataAdapter.AcceptChanges();它基本上将更改提交到表。
在您的编码中,您需要在将列添加到表后进行类似的调用,以使插入能够正常工作。
答案 2 :(得分:0)
这可能是因为数据描述语言(DDL)通常在事务之外执行。也许提交/回滚,甚至重新连接都会对问题进行排序。只是一个猜测。