Java 如何使用Spring的NamedParameterJdbcTemplate在MySQL数据库中创建和删除表?

Java 如何使用Spring的NamedParameterJdbcTemplate在MySQL数据库中创建和删除表?,java,mysql,spring,jdbctemplate,Java,Mysql,Spring,Jdbctemplate,我知道如何使用插入、更新和删除MySQL表中的数据。但是如何创建和删除表呢?您可以创建一个表,或者删除一个表,就像执行DML语句一样。。。SQL语句作为字符串传递给数据库引擎 我怀疑您要问的是,是否可以在SQL语句中提供一个标识符,例如表名,在执行准备好的语句时将其作为绑定占位符的值。e、 g CREATE TABLE ? (mycol INT) 或 简而言之,这是不可能做到的 语句中的标识符(例如表名)必须在SQL文本中显示。就像关键字SELECT和FROM必须出现在SQL文本中一样,不

我知道如何使用插入、更新和删除MySQL表中的数据。但是如何创建和删除表呢?

您可以创建一个表,或者删除一个表,就像执行DML语句一样。。。SQL语句作为字符串传递给数据库引擎

我怀疑您要问的是,是否可以在SQL语句中提供一个标识符,例如表名,在执行准备好的语句时将其作为绑定占位符的值。e、 g

 CREATE TABLE ? (mycol INT) 

简而言之,这是不可能做到的

语句中的标识符(例如表名)必须在SQL文本中显示。就像关键字SELECT和FROM必须出现在SQL文本中一样,不能通过绑定占位符作为值提供

我们可以在SELECT语句中演示该限制,尝试将表或视图的名称作为绑定占位符提供。这是不是位置问题不重要?或命名占位符

这不起作用:

SELECT t.col c FROM ? t LIMIT 1
但这不起作用:

SELECT 2 AS :col_alias FROM :v_table_name LIMIT 1  
如果您了解SQL优化器在准备和执行语句时执行的操作,那么关于标识符的限制是有意义的

此限制适用于SELECT语句。以及对DML语句的插入、更新、删除和对DDL语句的创建、更改、删除

执行DDL语句的另一个潜在问题将导致隐式提交。我们需要注意这一点,以便在事务上下文中正确处理这一点

如果需要执行动态DDL语句,为标识符提供变量,有两种基本方法:

1将SQL文本动态构造为字符串,以便表名和其他标识符是SQL文本的一部分,而不是绑定占位符


2创建一个将执行该语句的存储过程,并调用该存储过程。存储过程的参数可以作为绑定占位符传递。

请阅读BalusC对此问题的评论。谢谢..:完全意识到风险。我只是想知道这是否可能。。
SELECT 2 AS :col_alias FROM :v_table_name LIMIT 1