当前位置: 首页 > 面试题库 >

将数据集公开到xml文件中,导致DBunit中出现错误

边健
2023-03-14
问题内容

大家好,我正在使用dbunit。我正在尝试将db的数据集导出到xml文件中。

import java.sql.Connection;
import java.sql.DriverManager;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import java.io.FileOutputStream;

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 jdbcConnection = DriverManager.getConnection("jdbc:sqlserver://172.26.37.113:1433;DatabaseName=def_config","sqladmin_","halloween$2004");
        IDatabaseConnection connection = new DatabaseConnection( jdbcConnection );
       // full database export
        IDataSet fullDataSet = connection.createDataSet();
        FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml"));

    }
}

但是它给出了这样的错误:

Exception in thread "main" org.dbunit.dataset.DataSetException: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'user'.
    at org.dbunit.database.DatabaseDataSet.getTable(DatabaseDataSet.java:323)
    at org.dbunit.database.DatabaseTableIterator.getTable(DatabaseTableIterator.java:89)
    at org.dbunit.dataset.stream.DataSetProducerAdapter.produce(DataSetProducerAdapter.java:83)
    at org.dbunit.dataset.xml.FlatXmlWriter.write(FlatXmlWriter.java:124)
    at org.dbunit.dataset.xml.FlatXmlDataSet.write(FlatXmlDataSet.java:378)
    at DatabaseExport.main(DatabaseExport.java:23)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'user'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:611)
    at org.dbunit.database.AbstractResultSetTable.<init>(AbstractResultSetTable.java:110)
    at org.dbunit.database.ForwardOnlyResultSetTable.<init>(ForwardOnlyResultSetTable.java:59)
    at org.dbunit.database.CachedResultSetTableFactory.createTable(CachedResultSetTableFactory.java:60)
    at org.dbunit.database.DatabaseDataSet.getTable(DatabaseDataSet.java:319)
    ... 5 more

问题答案:

我的猜测是user您的数据库中有一个表。但是user是MSSQL中的保留关键字。DBUnit创建一些查询,例如:

SELECT * FROM user;

但这会产生您所看到的错误。相反,DBUnit必须创建如下查询:

SELECT * from [user];

我认为您可以使用DBUnit
的转义模式配置设置来解决此问题。我自己没有尝试过,但是类似的东西应该可以工作:

connection.getConfig().setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN , "[?]");

我希望这有帮助!:)



 类似资料:
  • 问题内容: 我知道这是可能的,但我不确定从哪里开始。有人能做到吗? 谢谢。 问题答案: 本文中描述的类会将SQL lite DB导出到XML文件。 http://www.screaming-penguin.com/node/7749 完整的示例在此SVN存储库中可用。在类调用出口。 http://totsp.com/svn/repo/AndroidExamples/trunk/ 您将需要创建一个暴

  • 我正在尝试将JTable导出到Microsoft Excel可用的文件中。 最初,我将数据写入一个文本文件,并将扩展名设置为“.xls” 我们非常感谢任何帮助和洞察力。可能还值得一提的是,tables模型是一个自定义模型。

  • 问题内容: 是否可以将数据从XML文件导入到SQL数据库,如果可以,该怎么做。我有一个包含约50000条目的XML文件,我必须创建一个可以操纵该数据(主要是读取和比较)的应用程序- 因此,我担心的是使用该数量的数据进行操纵(而且很可能未来还会有更多)将会非常缓慢且效率低下。如果您认为还有其他选择会更好,请告知。谢谢 问题答案: 您可以使用SQL Server导入和导出向导。您还可以查看SQL Se

  • 随着应用程序的改进,我希望加密XML文件,以防止用户查看内部(其中有一堆数据,但应用程序根据分配给用户的访问级别有选择地显示数据)。我研究了“Rijndael Managed”,得到了一个基于VB.NET中加密/解密文件的原型。我不知道如何将一个流传递给加密类而不将它们保存到磁盘中。 现在,我将xml文件从Dataset中保存到一个临时目录中,构造一个新的流并将其传递给CrypotoStream,

  • 问题内容: 我有SSIS包,可以将数据从表导出到Excel文件 这是我的步骤: 删除Excel表 创建具有我选择查询格式的Excel表格,该表格用于从数据库中检索数据 将数据从数据库插入Excel文件 我用过像查询 我从10000行中检索出3000行,并将这3000行放入我的Excel工作表中。 但是,当打开我的Excel工作表时,我看到滚动条一直延伸到第10000行并结束,因此我的Excel工作