2011-06-20 49 views
1

我正在使用JUnit來測試應用程序。我決定在運行時使用HSQL創建內存數據庫。當我嘲笑Oracle數據庫時,這工作正常。但是,當我嘗試模擬現有的DB2數據庫時,遇到了一個問題。我們使用的其中一列在列名稱中有#符號(即「Person#」)。 HSQL不能解釋這個字符,並且在嘗試加載模式時會拋出一個硬錯誤。HSQL列包含#

我試過把HSQL放在DB2模式下,仍然沒有運氣。有可能在HSQL或內存數據庫中使用#符號嗎?不幸的是,對於簡單的測試覆蓋率來說,更改列名是太多了。

回答

1

則需要用雙引號括列名:

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

不幸訪問該列

+0

感謝時,你會再需要總是使用雙引號!那就是訣竅。這太糟糕了,我將不得不始終使用雙引號來訪問該字段。但我認爲DB2也會接受引號,所以我們將對DAO層進行必要的更改,以使我們的應用程序更獨立於數據庫。 – bMcNees

+0

根據SQL標準,'#'字符是非標準字符。 DB2足夠優雅以允許它,其他DBMS可能也有該字符的問題,所以如果您計劃將此應用程序移植到另一個DBMS,您可能會考慮全部刪除「#」字符 –