.net 操作 oracle 的 clob 类型遇到错误!

liu_ff123 2009-09-17 10:10:32

string sql = @"Update TestTb Set TbName = :TbName,TbContent =:TbContent where TbId = :TbId";
OracleCommand cm = new OracleCommand(sql, new OracleConnection(this.Connection.ConnectionString));
cm.Connection.Open();
cm.Parameters.Add("TbName", OracleType.VarChar).Value = model.TbName;
cm.Parameters.Add("TbContent ", OracleType.Clob).Value = model.TbContent ;
cm.Parameters.Add("TbId ", OracleType.Number).Value = model.TbId ;
try
{
cm.ExecuteNonQuery();
}
catch
{
}


TbContent 在数据库里的类型为Clob 如果我用OracleType.Clob 的话会出错。
用户代码未处理 System.Data.OracleClient.OracleException
Message="ORA-01084: OCI 调用中的参数无效"
Source="System.Data.OracleClient"
ErrorCode=-2146232008
Code=1084

而改成 OracleType.VarChar 的话就没有问题。
...全文
268 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pupo 2009-09-17
  • 打赏
  • 举报
回复
OracleParameter _parameter = new OracleParameter("TbContent", OracleType.Clob, model.TbContent.Length, ParameterDirection.Input, False, 0, 0, "", DataRowVersion.Default, model.TbContent);
liu_ff123 2009-09-17
  • 打赏
  • 举报
回复
问题发现了好像是 model.TbContent = "" 的话,就会出现错误。而用VarChar 的话 即便model.TbContent = "" 也是没问题的?为什么 Clob 不能插入""?
风之影子 2009-09-17
  • 打赏
  • 举报
回复
而改成 OracleType.VarChar 的话就没有问题。

问题不在这儿

看看你的数据库类型是什么.
flyerwing 2009-09-17
  • 打赏
  • 举报
回复
类型错误!
flybird066 2009-09-17
  • 打赏
  • 举报
回复
使用二进制的方法进行处理
zzxap 2009-09-17
  • 打赏
  • 举报
回复
new OracleConnection(this.Connection.ConnectionString) 这个返回类型跟定义的类型是否一样?
yzy8788 2009-09-17
  • 打赏
  • 举报
回复
clob的意思是大字符对象(Character Large Object),也就是说clob归根揭底还是字符类型,如果楼主用OracleType.VarChar行的话,那就将就着用吧,从网上看也有其他人出现这个问题的
liucuiqiang 2009-09-17
  • 打赏
  • 举报
回复
OracleParameter _parameter = new OracleParameter("TbContent", OracleType.Clob);
_parameter.Value = model.TbContent;
cm.Parameters.Add(_parameter);
我用行

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧