C#XmlSerialiser到Oracle Clob优化

时间:2017-07-20 09:15:06

标签: c# oracle stream

为了将xml文件保存到Oracle数据库,我需要执行许多步骤。

XmlCustomType xmlCustomType = new XmlCustomType();

// feed xmlCustomType

var xmlSerializer = new XmlSerializer(typeof(XmlCustomType));

string xml;

using (StringWriter textWriter = new StringWriter())
{
    xmlSerializer.Serialize(textWriter, xmlCustomType);
    xml = textWriter.ToString();

    using (var sr = new StringReader(xml))
    {
        char[] buffer = new char[1000];
        int numChars;

        using (OracleConnection con = new OracleConnection(""))
        {
            OracleClob clob = new OracleClob(con);

            while ((numChars = sr.ReadBlock(buffer, 0, buffer.Length)) > 0)
            {
                clob.Write(buffer, 0, numChars);
            }
        }
    }
}

我想用

之类的东西来优化它
XmlCustomType xmlCustomType = new XmlCustomType();

// feed xmlCustomType

var xmlSerializer = new XmlSerializer(typeof(XmlCustomType));

using (OracleConnection con = new OracleConnection(""))
{
    OracleClob clob = new OracleClob(con);
    xmlSerializer.Serialize(clob, xmlCustomType);
}

不幸的是,我收到了一条我无法理解的错误消息:

  

Unicode字节数组上的操作要求某些参数具有偶数值

从xmlserializer到OracleClob的最小步骤是什么?

1 个答案:

答案 0 :(得分:0)

从1000转到100000缓冲区大小可以大大加快这个过程。

每个clob.write都是对数据库的请求,因此通过这样做可以降低对数据库的请求数。