CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  .NET Framework

使用SqlCommand读取数据表时,抛出"对象必须实现 IConvertible。"的异常,请问这是什么错误?

楼主kentis(小张->老张)2003-12-03 20:47:44 在 .NET技术 / .NET Framework 提问

代码如下:  
  public   override   bool   Insert()  
  {  
  SqlCommand scmCmdToExecute   =   new   SqlCommand();  
  scmCmdToExecute.CommandText   =   "dbo.[sp_Comm_ForumPosts_Insert]";  
  scmCmdToExecute.CommandType   =   CommandType.StoredProcedure;  
   
  scmCmdToExecute.Connection   =   this.conn;  
  //   执行查询.  
  m_iRowsAffected   =   scmCmdToExecute.ExecuteNonQuery();  
  m_iID   =   (Int32)scmCmdToExecute.Parameters["@iID"].Value;  
  m_iErrorCode   =   (Int32)scmCmdToExecute.Parameters["@iErrorCode"].Value;  
  }  
   
   
  问题点数:30、回复次数:5Top

1 楼saucer(思归)回复于 2003-12-03 20:54:21 得分 30

where   did   you   add   your   parameters   to   scmCmdToExecute.Parameters   for   "@iID"   and   "@iErrorCode   ?   what   is   "@iID",   a   return   value   or   output   value?  
  Top

2 楼kentis(小张->老张)回复于 2003-12-03 22:01:41 得分 0

是的,我把添加参数的部份省略了,我怀疑这个接口是在Sql数据类型转换时用的,添加参数的代码如下:  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@iPID",   SqlDbType.Int,   4,   ParameterDirection.Input,   true,   10,   0,   "",   DataRowVersion.Proposed,   m_iPID));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@sSubject",   SqlDbType.NVarChar,   100,   ParameterDirection.Input,   true,   0,   0,   "",   DataRowVersion.Proposed,   m_sSubject));  
  int iLength   =   0;  
  if(!m_sBody.IsNull)  
  {  
  iLength   =   m_sBody.Value.Length;  
  }  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@sBody",   SqlDbType.Text,   iLength,   ParameterDirection.Input,   true,   0,   0,   "",   DataRowVersion.Proposed,   m_sBody));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@iBlockID",   SqlDbType.Int,   4,   ParameterDirection.Input,   true,   10,   0,   "",   DataRowVersion.Proposed,   m_iBlockID));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@iUserID",   SqlDbType.Int,   4,   ParameterDirection.Input,   true,   10,   0,   "",   DataRowVersion.Proposed,   m_iUserID));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@daPostDate",   SqlDbType.DateTime,   8,   ParameterDirection.Input,   true,   23,   3,   "",   DataRowVersion.Proposed,   m_daPostDate));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@fScore",   SqlDbType.Float,   8,   ParameterDirection.Input,   true,   10,   0,   "",   DataRowVersion.Proposed,   m_iScore));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@sIsPrime",   SqlDbType.Char,   1,   ParameterDirection.Input,   true,   0,   0,   "",   DataRowVersion.Proposed,   m_sIsPrime));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@sIsLocked",   SqlDbType.Char,   1,   ParameterDirection.Input,   true,   0,   0,   "",   DataRowVersion.Proposed,   m_sIsLocked));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@sIsClosed",   SqlDbType.Char,   1,   ParameterDirection.Input,   true,   0,   0,   "",   DataRowVersion.Proposed,   m_sIsClosed));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@daLastRelapse",   SqlDbType.DateTime,   8,   ParameterDirection.Input,   true,   23,   3,   "",   DataRowVersion.Proposed,   m_daLastRelapse));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@daLastModifyDate",   SqlDbType.DateTime,   8,   ParameterDirection.Input,   true,   23,   3,   "",   DataRowVersion.Proposed,   m_daLastModifyDate));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@sLastModifyBy",   SqlDbType.VarChar,   50,   ParameterDirection.Input,   true,   0,   0,   "",   DataRowVersion.Proposed,   m_sLastModifyBy));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@iVer",   SqlDbType.Int,   4,   ParameterDirection.Input,   true,   10,   0,   "",   DataRowVersion.Proposed,   m_iVer));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@iID",   SqlDbType.Int,   4,   ParameterDirection.Output,   true,   10,   0,   "",   DataRowVersion.Proposed,   m_iID));  
  scmCmdToExecute.Parameters.Add(new   SqlParameter("@iErrorCode",   SqlDbType.Int,   4,   ParameterDirection.Output,   true,   10,   0,   "",   DataRowVersion.Proposed,   m_iErrorCode));Top

3 楼kentis(小张->老张)回复于 2003-12-03 22:02:23 得分 0

但是实现这个接口里,它有一大堆的方法要我实现Top

4 楼saucer(思归)回复于 2003-12-03 22:28:36 得分 0

"对象必须实现   IConvertible"   normally   means   there   is   mis-matched   type   that   ado.net   cannot   convertTop

5 楼kentis(小张->老张)回复于 2003-12-04 00:14:41 得分 0

Yes,I   know   ,   I   will   never   User   SqlType!!!Top

相关问题

  • 关于SQL中数据表的读取
  • PHP如何读取ACCESS和EXCEL数据表?
  • 一个读取数据表格中的数据的问题
  • 如何读取数据表字段的描述
  • 如何将读取到的数据表现在OPTION SELECTED上?
  • adotable读取大数据表的速度问题
  • asp为何不能读取无主键的数据表?
  • dbf数据表读取问题.知道的说一声
  • 数据表读取效率问题,请谈谈经验
  • 如何通过ODBC读取一个数据库包含哪些数据表。

关键词

  • scmcmdtoexecute
  • ierrorcode
  • iid
  • parameters
  • add

得分解答快速导航

  • 帖主:kentis
  • saucer

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo