1

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

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
4

2 回答 2

3

请在表名前后留空格。

您的原始代码导致执行此 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();总比没有好......
于 2013-02-20T12:00:06.100 回答
2

在“创建表”之后放置一个空格,即

"create table "

您的陈述被评估为 create tablestudent...

于 2013-02-20T12:00:54.290 回答