我正在做一个学生管理系统,但是出现了一些问题,运行时出现“指定的转换无效”,
也就是以下这段oItem = new PDSAListItemNumeric();
                    oItem.ID = (int) oDR["学号"];
                    oItem.MstrValue = oDR["姓名"].ToString();
                    lstProducts.Items.Add(oItem);

try
            {
                oCmd = new SqlCommand();
                oCmd.Connection = new SqlConnection(strConn);
                oCmd.Connection.Open();
                oCmd.CommandText = strSQL;
                oDR = oCmd.ExecuteReader();                lstProducts.Items.Clear();
                while (oDR.Read())
                {
                    //lstProducts.Items.Add(oDR["姓名"].ToString());
                    oItem = new PDSAListItemNumeric();
                    oItem.ID = (int) oDR["学号"];
                    oItem.MstrValue = oDR["姓名"].ToString();
                    lstProducts.Items.Add(oItem);

                }
                if(lstProducts.Items.Count>0)
                {
                    lstProducts.SetSelected(0, true);
                }
            }
            catch (Exception oExcept)
            {
                MessageBox.Show(oExcept.Message);
            }

解决方案 »

  1.   

        oItem   =   new   PDSAListItemNumeric(); 
                                            oItem.name  =   (int)   oDR["学号"]; 
                                            oItem.text   =   oDR["姓名"].ToString(); 
                                            lstProducts.Items.Add(oItem); 
      

  2.   

    oItem.ID = (int)oDR["学号"]; 改为:
    oItem.ID = (oDR["学号"] is System.DBNull) ? 0 : (int)oDR["学号"];
    或者:
    oItem.ID = (oDR["学号"] is System.DBNull) ? 0 : int.Parse(oDR["学号"].ToString());
      

  3.   

    出什么提示信息了,
    可能是你的类型不匹配,或者数据字段没有值,或者不能强制转换int
      

  4.   

     (int)oDR["学号"]这样直接转换有问题,应该换成Covert.int32(odr["学号"]);
      
      

  5.   

    在调试的时候看看oDR["学号"].GetType()是什么。
    或者直接打出来Console.WriteLine(oDR["学号"].GetType().ToString());