java - 用用户命名的java在mysql中创建一个表?

标签 java mysql mysql-error-1064 create-table

问题是,有没有一种方法可以从文本字段中创建一个由用户命名的新表。我知道它是一个巨大的注入(inject)端口,但我真的需要新表,它只能离线工作。我试过了

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 的值。 我可以使用任何帮助吗?谢谢

最佳答案

根据此处:https://dev.mysql.com/doc/refman/5.7/en/identifiers.html , "标识符可以以数字开头,但除非被引用否则不能仅由数字组成。"

此外,目前您的代码对于 SQL 注入(inject)攻击是完全开放的。

关于java - 用用户命名的java在mysql中创建一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44113295/

相关文章:

满足条件的 PHP 查询必须出现在第二个表中

mysql - 如何将主报表字段传递给子报表查询

设置存储过程参数时出现mysql语法错误

sql - 'like' 和困惑的 MySQL 查询问题

MySQL If Else 语句错误

mysql - 为什么我在尝试使用 mysql-query 更新属性时遇到此语法错误?

java - 如何确定 TreeItem 是否是叶子

java - Spring Rest Web 服务返回 415

java - 日期格式不返回真实时间 - Java

java - 如何使用 Spring Security Oauth 忽略某些端点