public int GetClassIDByClassName(string className)
       {
           string number = string.Empty;
           SqlConnection conn = new SqlConnection(connstring );
           SqlCommand objCommand = new SqlCommand(dboOwner +".usp_SelectClassIDByClassName",conn );
           objCommand.CommandType = CommandType.StoredProcedure;
           objCommand.Parameters.Add("@ClassName",SqlDbType.NVarChar ,50).Value =className ;
           conn.Open();
           SqlDataReader objReader = objCommand.ExecuteReader(CommandBehavior .CloseConnection );
           if (objReader.Read())
           {
               number = Convert.ToInt32 (objReader["ClassID"]);
               objReader.Close();
               objReader.Dispose();
               conn.Close();
               conn.Dispose();
               return number;
           }
       }
 number = Convert.ToInt32 (objReader["ClassID"]);---无法将类型“int”隐式转换为“string”return number;---无法将类型“string”隐式转换为“int”请教各位前辈这是哪错了?
谢谢~

解决方案 »

  1.   

    number = Convert.ToInt32 (objReader["ClassID"].ToString())
      

  2.   

    public int GetClassIDByClassName(string className) 
           { 
               int number = string.Empty; 
               SqlConnection conn = new SqlConnection(connstring ); 
               SqlCommand objCommand = new SqlCommand(dboOwner +".usp_SelectClassIDByClassName",conn ); 
               objCommand.CommandType = CommandType.StoredProcedure; 
               objCommand.Parameters.Add("@ClassName",SqlDbType.NVarChar ,50).Value =className ; 
               conn.Open(); 
               SqlDataReader objReader = objCommand.ExecuteReader(CommandBehavior .CloseConnection ); 
               if (objReader.Read()) 
               { 
                   number = Convert.ToInt32 (objReader["ClassID"]); 
                   objReader.Close(); 
                   objReader.Dispose(); 
                   conn.Close(); 
                   conn.Dispose(); 
                   return number; 
               } 
           } return number;
      

  3.   

    string number = string.Empty; 
    --------》
    int number = 0;
      

  4.   


    public int GetClassIDByClassName(string className)
           {
               int number = 0;
               SqlConnection conn = new SqlConnection(connstring );
               SqlCommand objCommand = new SqlCommand(dboOwner +".usp_SelectClassIDByClassName",conn );
               objCommand.CommandType = CommandType.StoredProcedure;
               objCommand.Parameters.Add("@ClassName",SqlDbType.NVarChar ,50).Value =className ;
               conn.Open();
               SqlDataReader objReader = objCommand.ExecuteReader(CommandBehavior .CloseConnection );
               if (objReader.Read())
               {
                   number = Convert.ToInt32 (objReader["ClassID"]);
                   objReader.Close();
                   objReader.Dispose();
                   conn.Close();
                   conn.Dispose();
                   return number;
               }
           }
     number = Convert.ToInt32 (objReader["ClassID"]);---无法将类型“int”隐式转换为“string”return number;---无法将类型“string”隐式转换为“int” 
      

  5.   

    你的number 是String类型的
    把它申明为int就好了
      

  6.   

    你定义的number是string类型的: string number = string.Empty; 
    但 Convert.ToInt32 (objReader["ClassID"]); 返回的是int类型的,
    你让一个string的变量等于一个int的,当然不能隐式转换了 number = Convert.ToInt32 (objReader["ClassID"]);  //wrong!
      

  7.   

     number =( Convert.ToInt32 (objReader["ClassID"])).ToString(); 
      

  8.   

    sorry 
    int number =0;  
    忘记改了
      

  9.   


    用这个但 return number; 依然会报错
    这段代码是我按书上例子敲的,是通过班级名字来获得班级ID吧,说实在我不懂很懂这段代码的意思把number从string类型改成int类型没问题吗?
      

  10.   

    你自己看看吧,开始定义的是string,但是你非要convert成int,怎么可能呢
    public int GetClassIDByClassName(string className)
           {
               string number = string.Empty;
               SqlConnection conn = new SqlConnection(connstring );
               SqlCommand objCommand = new SqlCommand(dboOwner +".usp_SelectClassIDByClassName",conn );
               objCommand.CommandType = CommandType.StoredProcedure;
               objCommand.Parameters.Add("@ClassName",SqlDbType.NVarChar ,50).Value =className ;
               conn.Open();
               SqlDataReader objReader = objCommand.ExecuteReader(CommandBehavior .CloseConnection );
               if (objReader.Read())
               {
                   number = Convert.ToInt32 (objReader["ClassID"]);
                   objReader.Close();
                   objReader.Dispose();
                   conn.Close();
                   conn.Dispose();
                   return number;
               }
           }
      

  11.   

    public int GetClassIDByClassName(string className)
    {
        int number = 0;
        SqlConnection conn = new SqlConnection(connstring);
        SqlCommand objCommand = new SqlCommand(dboOwner + ".usp_SelectClassIDByClassName", conn);
        objCommand.CommandType = CommandType.StoredProcedure;
        objCommand.Parameters.Add("@ClassName", SqlDbType.NVarChar, 50).Value = className;
        conn.Open();
        SqlDataReader objReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
        if (objReader.Read())
        {
            number = Convert.ToInt32(objReader["ClassID"]);
            objReader.Close();
            objReader.Dispose();
            conn.Close();
            conn.Dispose();
        }
       return number;
      

  12.   

     if (objReader.Read())里面有返回值,要是不成立呢,就不要返回了吗,至少返回一个-1,在外面也好知道没有找到结果啊
      

  13.   

    把改为int number=0;以后报错
    GetClassIDByClassName---并非所有的代码路径都返回值
      

  14.   

    这个string number = string.Empty;是什么意思啊?是初始为空的意思??