java - 如何使用java在oracle中创建用户定义表(表名在字符串中)

标签 java oracle jdbc ddl

如何使用java创建用户自定义表(表名在字符串中)

String Tablename="student";
stmt=con.prepareStatement("create table"+Tablename+"(name varchar(12),class varchar(12))");
stmt.executeUpdate();

没有字符串,即用户定义的表名,它工作正常:

stmt=con.prepareStatement("create table student (name varchar(12),class varchar(12))");

但是上面列出的以字符串作为用户名的版本显示以下错误

java.sql.SQLException: ORA-00901: invalid CREATE command

最佳答案

请在表名前后留空格。

您的原始代码导致执行此 SQL 命令:

create tableMyTablename(name varchar(12),class varchar(12))

而且,数据库无法理解 tableMyTablename...

正确:

stmt=con.prepareStatement("create table "+Tablename+" (name varchar(12),class varchar(12))");

还有一些注意事项:

  • Java 命名:变量名以小写字母开头
  • 这(准备陈述)没有任何意义。有一个语句只能为一个表创建相同的结构是不可重用的。
  • 明智的做法是避免使用 + 连接字符串和其他对象的字符串表示...它可能会产生意想不到的结果,甚至编译错误...
  • 记录:在这种情况下,记录创建的 SQL 命令总是明智的。即使是 (讨厌!) System.out.println(); 总比没有好...

关于java - 如何使用java在oracle中创建用户定义表(表名在字符串中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979316/

相关文章:

java - 为什么 SpringLDAP/普通 Java AD 查询中的 accountExpires 和 userAccountControl 过滤器不能按预期工作?

java - 我使用 union-find 数据结构实现 Kruskal 算法有什么问题。

sql - Oracle SQL数据透视查询

java - 我想连接到java上的数据库,但有一些错误

java - Apache POI SXSSF 在刷新行上显示 NullPointerException

java - PreparedStatement 如何避免或防止 SQL 注入(inject)?

java - Netbeans 中的 Java 处理库 - 加载图像而不扩展 PApplet

java - 即使我添加自定义的反序列化器,Jackson 也无法将枚举反序列化为对象

java - Connection.setAutoCommit(true) 是否适用于 SQL 存储过程和函数?

oracle - PL/SQL : How to create type from cursor