首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

system.invalidcast Exception?解决办法

2011-12-27 
system.invalidcast Exception?“/Witkey/WebUISite”应用程序中的服务器错误。----------------------------

system.invalidcast Exception?
“/Witkey/WebUISite”应用程序中的服务器错误。
--------------------------------------------

指定的转换无效。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.InvalidCastException:   指定的转换无效。

源错误:  


行   39:                                   {
行   40:  
行   41:                                           TaskInfo   task   =   new   TaskInfo(sdr.GetInt32(0),   sdr.GetInt32(1),   sdr.GetInt32(2),   sdr.GetString(3),   sdr.GetString(4),   sdr.GetString(5),   sdr.GetString(6),   sdr.GetString(7),   sdr.GetDecimal(8),   sdr.GetDateTime(9),   sdr.GetDateTime(10));
行   42:                                           Task.Add(task);
行   43:  
 

源文件:   C:\Inetpub\wwwroot\Witkey\SqlServerInterface\Task.cs         行:   41  

堆栈跟踪:  


[InvalidCastException:   指定的转换无效。]
      System.Data.SqlClient.SqlBuffer.get_Int32()   +121
      System.Data.SqlClient.SqlDataReader.GetInt32(Int32   i)   +39
      Witkey.SqlServerInterface.Task.GetTasks()   in   C:\Inetpub\wwwroot\Witkey\SqlServerInterface\Task.cs:41
      Witkey.BLL.Task.GetTasks()   in   C:\Inetpub\wwwroot\Witkey\BLL\Task.cs:19
      Witkey.Web.Controls_TaskControl.taskList_Load(Object   sender,   EventArgs   e)   in   c:\Inetpub\wwwroot\Witkey\WebUISite\Controls\TaskControl.ascx.cs:23
      System.Web.UI.Control.OnLoad(EventArgs   e)   +99
      System.Web.UI.WebControls.BaseDataList.OnLoad(EventArgs   e)   +114
      System.Web.UI.Control.LoadRecursive()   +47
      System.Web.UI.Control.LoadRecursive()   +131
      System.Web.UI.Control.LoadRecursive()   +131
      System.Web.UI.BasePartialCachingControl.LoadRecursive()   +113
      System.Web.UI.Control.LoadRecursive()   +131
      System.Web.UI.Control.LoadRecursive()   +131
      System.Web.UI.Control.LoadRecursive()   +131
      System.Web.UI.Control.LoadRecursive()   +131
      System.Web.UI.Page.ProcessRequestMain(Boolean   includeStagesBeforeAsyncPoint,   Boolean   includeStagesAfterAsyncPoint)   +1061

 


--------------------------------------------
版本信息:   Microsoft   .NET   Framework   版本:2.0.50727.42;   ASP.NET   版本:2.0.50727.42  


    public   IList <TaskInfo>   GetTasks()  
                {
                        return   dal.GetTasks();
                }
--------------
      public   IList <TaskInfo>   GetTasks()
                {



                        IList <TaskInfo>   Task   =   new   List <TaskInfo> ();


                        using   (SqlDataReader   sdr   =   SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction,   CommandType.Text,   Sql_Select_Tasks,   null))
                        {
                                while   (sdr.Read())
                                {

                                        TaskInfo   task   =   new   TaskInfo(sdr.GetInt32(0),   sdr.GetInt32(1),   sdr.GetInt32(2),   sdr.GetString(3),   sdr.GetString(4),   sdr.GetString(5),   sdr.GetString(6),   sdr.GetString(7),   sdr.GetDecimal(8),   sdr.GetDateTime(9),   sdr.GetDateTime(10));
                                        Task.Add(task);

                                }
                                sdr.Close();

                        }

                        return   Task;

                }
----------------

[解决办法]
TaskInfo task = new TaskInfo(sdr.GetInt32(0), sdr.GetInt32(1), sdr.GetInt32(2), sdr.GetString(3), sdr.GetString(4), sdr.GetString(5), sdr.GetString(6), sdr.GetString(7), sdr.GetDecimal(8), sdr.GetDateTime(9), sdr.GetDateTime(10));
====================================================================
你是否确认你取出来的数据的数据类型和你所Get的一一对应?也就是说在数据库里第一个到第十一个的类型分别是 整型、整型、整型、字符、字符、字符、字符、字符、浮点、日期、日期

而且由于你是放在IList中,似乎没有必要数据类型这么精确,可以都是用sdr.GetValue(0).ToString(),sdr.GetValue(1).ToString(),sdr.GetValue(3).ToString(),....sdr.GetValue(10).ToString(),

热点排行