【发布时间】:2017-10-22 03:16:52
【问题描述】:
问题是,有没有办法从文本字段中创建一个由用户命名的新表。我知道它是一个巨大的注入端口,但我真的需要新表,它只能离线工作。我试过了
String newtable = jTextField1.getText();
PreparedStatement create = conn.prepareStatement("CREATE TABLE IF NOT EXISTS '"+newtable+"'(ID INTEGER NOT NULL AUTO_INCREMENT, IDapol INTEGER, ΗΜΕΡΟΜΗΝΙΑ DATE, ΕΣΟΔΑ DOUBLE, PRIMARY KEY(ID), CONSTRAINT IDapol FOREIGN KEY(IDapol) REFERENCES apol(IDapol)");
但我收到一条错误消息:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在“1718”附近使用正确的语法(ID INTEGER NOT NULL AUTO_INCREMENT,IDapol,INTEGER,ΗΜΕΡΟΜΗΝΙΑ' 在第 1 行
1718 是我的 textField1 的值。 我可以使用任何帮助吗?谢谢
【问题讨论】:
-
表名应以字符开头
-
据我所知mysql不允许只有数字的表名。正如documentation 所说:标识符可以以数字开头,但除非被引用,否则可能不仅仅由数字组成。
-
打印您生成的查询并尝试在数据库中运行。这是语法错误,您可以自己解决。
标签: java mysql mysql-error-1064 create-table