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、DBは理解できませんでした...

正しく:

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 に答える