【在线】向ORACLE中更新数据,当参数值为空字符串出错!

jackyped 2005-08-17 12:23:05
Conn=new OracleConnection("data source=ora28;user id=28;password=28");
Conn.Open();
OracleCommand cmdAddExam=new OracleCommand();
cmdAddExam.Connection=Conn;

cmdAddExam.CommandText="update FXGL_QUESTION set Q_REMARK=:Q_REMARK where Q_ID ="+ Convert.ToInt32(txtQ_id.Text);

cmdAddExam.Parameters.Add(":Q_REMARK",OracleType.VarChar);
cmdAddExam.Parameters[":Q_REMARK"].Value=OracleString.Empty;
// cmdAddExam.Parameters[":Q_REMARK"].Value=txtQ_Remark.Text.Trim() ;
'这里
'空字符串就报错:Parameter ':Q_REMARK': No size set for variable length data type: String.

cmdAddExam.ExecuteNonQuery();
cmdAddExam.Parameters.Clear();
Conn.Close();

}
catch(Exception ex)
{
Response.Write(ex.Message);
}
...全文
206 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyped 2005-08-17
  • 打赏
  • 举报
回复
No size set for variable length data type: String解决办法

Oracle数据库采用insert和updata语句在处理空字符串时会抛出异常:

未处理的“System.Exception”类型的异常出现在 system.data.dll 中。
其他信息: Parameter ':备注': No size set for variable length data type: String.

事情的起因是OracleCommand的参数没有赋予适当的Size属性,它采用的是默认值0。但是当执行update时给它赋""时,会抛出异常。
需要显式赋值,如:oraParam.Size = 10;


还有没有别的办法?

jackyped 2005-08-17
  • 打赏
  • 举报
回复
-- Create table
create table FXGL_QUESTION
(
Q_ID NUMBER(4) not null,
Q_REMARK VARCHAR2(200),
)
定义表的时候Q_REMARK可以为空,update FXGL_QUESTION set Q_REMARK =''在SQL/PLUS中可以通过

110,538

社区成员

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

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

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