2011-06-20 6 views
1

が含まれています。アプリケーションをテストするためにJUnitを使用しています。実行時にメモリ内のデータベースを作成するためにHSQLを使用することに決めました。これは、Oracleデータベースを嘲笑しているときにうまく動作します。しかし、既存のDB2データベースを模擬しようとすると、問題が発生します。使用する列の1つに列名に「#」記号が付いています(例:「Person#」)。 HSQLはこの文字を解釈できないため、スキーマをロードしようとするとハードエラーが発生します。HSQLカラムには#

私はDB2モードでHSQLを入れようとしましたが、まだ運がありません。 HSQLやメモリデータベースの#記号を使用することは可能ですか?残念ながら、列名を変更するだけでは単純なテストカバレッジにはあまりにも多くの作業が必要になります。

答えて

1

あなたは二重引用符で列名を囲む必要があります。

CREATE TABLE foo 
(
    "PERSON#" VARCHAR(10) 
) 

残念ながらあなたは

+0

おかげで、その列にアクセスするときは、二重引用符を使用し、常ににする必要があります!それがトリックでした。フィールドにアクセスするために二重引用符を常に使用する必要があるのは残念です。しかし、私はDB2も引用符を受け入れると思うので、アプリケーションをよりデータベースに依存しないようにDAOレイヤーに必要な変更を加えます。 – bMcNees

+0

'#'文字はSQL標準に準拠した非標準文字です。 DB2は他のDBMSもその文字に問題がある可能性があるので、このアプリケーションを別のDBMSに移植する予定がある場合は、 '#'文字をすべて削除することを検討してください –

関連する問題