【发布时间】:2011-05-26 16:41:12
【问题描述】:
我正在尝试将大于 4000 个字符的 Xml 块插入到 Oracle 表中的 XmlType 字段中。
原来我的代码是这样工作的:
DbParameter parameter = new DbParameter;
parameter = clientFactory.CreateParameter(":p_xml_data", DbType.AnsiString, messageToLog.Length, ParameterDirection.Input, messageToLog);
然而,当我开始尝试插入大于 4000 字节的 Xml 块时,我得到了:
ORA-01461: can bind a LONG value only for insert into a LONG column
这与2508987/insert-xml-with-more-than-4000-characters-into-a-oracle-xmltype-column 的问题相同,但是我没有 DbType.Clob 作为选项(它不存在)。
接下来我尝试将类型更改为 DbType.Object,希望它能将其转换为所需的任何内容,但我收到以下消息:
Cannot bind type System.String as Blob
然后我尝试使用 DbType.XML,我修改了我的代码以将 messageToLog 移动到 SqlXml 对象中:
SqlXml sx;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(messageToLog);
using (XmlNodeReader xnr = new XmlNodeReader(xmlDoc))
{
sx = new SqlXml(xnr);
}
并相应地更改了参数:
parameter = providerFactory.CreateParameter(":p_xml_data", DbType.Xml, messageToLog.Length, ParameterDirection.Input, sx);
现在我明白了:
Value is not valid for DbType: Xml
确实,我只是想在我的专栏中存储更大的 XML 块。
【问题讨论】: