写入Oracle DB时损坏字符串

时间:2014-07-25 08:46:51

标签: vb.net oracle oracle11g xml-serialization corruption

我将一些数据序列化为xml,然后将输出写入Oracle DB。

序列化数据可能很长,并且写入LONG的列类型(它永远不会达到LONG的最大值,这类似于32,000个字符)

有时候我的数据写入时,它似乎已损坏,只显示“?”还有很多其他的控制字符,有时写得很完美。

我正在使用的函数总是返回XML没有问题,写入数据时会出现问题。

这是我的序列化功能:

Private Function Serialize(myObject As object)

    //serialize the object to a string...

    Dim x = New System.Xml.Serialization.XmlSerializer(myObject .[GetType]())
    Dim stringWriter = New StringWriter()
    x.Serialize(stringWriter, myObject )

    Dim test = stringWriter.ToString()
    Return stringWriter.ToString()

    stringWriter.Close()

End Function

然后我正在编写使用nHibernate返回给数据库的数据,我将不会包含此代码,因为它很长并且长时间没有失败。问题似乎在于Oracle如何解释数据。

我的unitofwork提交没有任何错误 - 当oracle收到数据时,只是数据已损坏。

更新

如果我复制了字符串写入器输出,那么将其粘贴到我可以提交的数据库中的列中而不会出现问题

1 个答案:

答案 0 :(得分:0)

正如wolφi在评论中所建议的那样。

对此的修复是使用CLOB作为列数据类型。我的Oracle版本中不存在XMLType