2

如何使用Spring-test-dbunit 框架转义 SQL Server 关键字?

在我的@DatabaseSetup("sampleData.xml")文件中,我有一个名为的表File,它是 SQL Server 中的保留关键字。为了使查询在 SQL Server 上成功运行,保留关键字需要用方括号 ( [File]) 封装。

Expoting Dataset 到在 DBunit 中给出错误的 xml 文件,我看到这可以通过设置模式转义配置在 dbunit 中完成。使用 Spring-test-dbunit 时,我不知道在哪里或如何放置此配置。

使用提供的 xml 提要将测试数据插入数据库时​​,我在哪里/如何告诉 spring-test-dbunit 框架正确转义数据库关键字?

如果您想查看代码,请告诉我应该发布哪些摘录,我很乐意这样做。

4

2 回答 2

0

I think, this might help you

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 回答
0

要使用 spring-test-dbunit 执行此操作,您需要遵循其文档页面上的“自定义 IDatabaseConnections”部分: https ://springtestdbunit.github.io/spring-test-dbunit/

对于 Java Config 变体(并作为备份参考),请参阅此 StackOverflow 问题的答案:Spring Test DBunit 警告

在您的情况下,使用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 回答