繁体   English   中英

使用spring-test-dbunit转义保留的数据库关键字

[英]Escaping reserved database keywords with spring-test-dbunit

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

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

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

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

如果您想查看代码,请告诉我我应该张贴的摘录,我很乐意这样做。

我认为,这可能对您有帮助

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"));
    }
}

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

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

在您的情况下,使用dbUnitDatabaseConfig bean,将escapePattern属性设置为"[?]" 如:

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

旁注,如果在测试运行时使用JPA / Hibernate生成单元测试架构,则还需要转义Hibernate。 请参考以下答案: https : //stackoverflow.com/a/3463189/1034436

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM