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

如何使用java在oracle中创建用户定义的表(表名为字符串),java,oracle,jdbc,ddl,Java,Oracle,Jdbc,Ddl,如何使用java在oracle字符串中创建用户定义的表名 String Tablename="student"; stmt=con.prepareStatement("create table"+Tablename+"(name varchar(12),class varchar(12))"); stmt.executeUpdate(); 使用out字符串,即用户定义的表名,它可以正常工作: stmt=con.prepareStatement("create table student (na

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

String Tablename="student";
stmt=con.prepareStatement("create table"+Tablename+"(name varchar(12),class varchar(12))");
stmt.executeUpdate();
使用out字符串,即用户定义的表名,它可以正常工作:

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;总比没有好。。。
请在表名前后留出空格

您的原始代码导致执行此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;总比没有好。。。
在创建表之后放置一个空格,即

"create table "

您的语句被评估为create TABLESTUNDENT…

请在create table后面加一个空格,即

"create table "
您的语句被评估为create TABLESTUNDENT