2

Spring-test-dbunit フレームワークを使用して SQL Server キーワードをエスケープするにはどうすればよいですか?

私の@DatabaseSetup("sampleData.xml")ファイルにはFile、SQL Server の予約済みキーワードであるというテーブルがあります。SQL Server でクエリを正常に実行するには、予約済みキーワードを角かっこ ( [File]) でカプセル化する必要があります。

DBunit でエラーが発生する xml ファイルへのデータセットのエクスポートから、パターン エスケープ構成を設定することで dbunit でこれを実行できることがわかります。Spring-test-dbunit を使用する場合、この構成をどこにどのように配置すればよいかわかりません。

提供された xml フィードを使用してテスト データをデータベースに挿入するときに、データベース キーワードを適切にエスケープするように spring-test-dbunit フレームワークに指示するには、どこでどのようにすればよいですか?

コードをご覧になりたい場合は、投稿する必要がある抜粋をお知らせください。喜んで投稿します。

4

2 に答える 2

0

spring-test-dbunit でこれを行うには、ドキュメント ページの「カスタム IDatabaseConnections」セクションに従う必要があります: https://springtestdbunit.github.io/spring-test-dbunit/

Java Config バリアント (およびバックアップ リファレンスとして) については、この StackOverflow の質問の回答を参照してください: Spring Test DBunit Warning

あなたの場合、dbUnitDatabaseConfigBean を使用して、escapePatternプロパティをに設定します"[?]"。次のように:

<bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean">
    <property name="escapePattern" value="[?]"/>
</bean>

ちなみに、JPA/Hibernate を使用してテスト実行時に単体テスト スキーマを生成する場合は、Hibernate のエスケープも必要です。それについては、この回答を参照してください: https://stackoverflow.com/a/3463189/1034436

于 2016-03-24T08:18:01.137 に答える
0

私は思う、これはあなたを助けるかもしれない

public class DatabaseExport
{
    public static void main(String[] args) throws Exception
    {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
        Connection jdbcConn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=def_config","dbuser","dbpasswd");
        IDatabaseConnection iconn = new DatabaseConnection( jdbcConn );
        iconn.getConfig().setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN , "[?]");
        IDataSet fullDataSet = iconn.createDataSet();
        FlatXmlDataSet.write(fullDataSet, new FileOutputStream("X:/fullDataSet.xml"));
    }
}
于 2013-07-10T01:57:11.183 に答える