我将一些数据序列化为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收到数据时,只是数据已损坏。
更新
如果我复制了字符串写入器输出,那么将其粘贴到我可以提交的数据库中的列中而不会出现问题
答案 0 :(得分:0)
正如wolφi在评论中所建议的那样。
对此的修复是使用CLOB
作为列数据类型。我的Oracle版本中不存在XMLType
。