Nim*_*oud 7 c# sql oracle datatable
我需要将所有数据表导出到单个XML文件,并且由于System.OutOfMemoryException(如果有一个巨大的表),我无法一次导出所有行.所以我试着导出N行.但是,如果我在查询中使用分页语法,则WriteXml会抛出异常.
我在LINQPad中测试了两个查询,它们没问题.
System.InvalidOperationException:无法序列化DataTable.未设置DataTable名称.
// The first query causes exception
string oraQueryGetTableData = "SELECT * FROM (SELECT t0.* FROM MY_TABLE t0) WHERE ROWNUM <= 100";
// The second query runs without any error
//oraQueryGetTableData = "SELECT * FROM MY_TABLE";
OracleCommand oraCommandGetTableData = new OracleCommand(oraQueryGetTableData, oraConnection);
OracleDataReader oraReaderTableData = oraCommandGetTableData.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(oraReaderTableData);
// Exception might occur here
dataTable.WriteXml(writer, true);
Run Code Online (Sandbox Code Playgroud)
这是什么问题或我该如何解决这个问题?
Jen*_*cke 19
正如例外所述 - 表没有它的TableName属性集.所以你只需要设置它.
DataTable dataTable = new DataTable { TableName = "MyTableName"};
dataTable.Load(oraReaderTableData);
....
Run Code Online (Sandbox Code Playgroud)