protected void BtnSearch_Click(object sender, EventArgs e)
    {
        Jxllt.DBUtility.DbHelperSQL.ConnDataBase("jxtmsg", "");
        SqlParameter[] dist ={
                                new SqlParameter(strMobile,SqlDbType.VarChar,12),
                                new SqlParameter(ret,SqlDbType.Int)
                             };
        dist[0].Value = this.TxtMobile.Text.Trim().ToString();
        dist[1].Direction = ParameterDirection.Output;
        sdr = Jxllt.DBUtility.DbHelperSQL.RunProcedure("Pad_MobilePath", dist);
    }
当我运行的时候就会出现找不到存储过程"Pad_MobilePath"的问题,但是我数据库里面存在这个存储过程。数据库的连接也没有什么问题。这是怎么回事,该怎么解决

解决方案 »

  1.   

    检查一下存储过程的 所有者? 看是不是 dbo 
    这个可能是 存储过程所有者问题!  就是你连接数据库的用户 和 创建存储过程的用户 不是同一个用户!
      

  2.   

    在查询分析器中
    Exec 存储过程名 参数 看看有没问题
      

  3.   

    new SqlParameter(strMobile,SqlDbType.VarChar,12), 
    new SqlParameter(ret,SqlDbType.Int)
    應該是new SqlParameter(@strMobile,SqlDbType.VarChar,12), 
    new SqlParameter(@ret,SqlDbType.Int) 
    看一下你連接的數據庫是否和存儲過程所在的數據庫相同
      

  4.   

     protected void BtnSearch_Click(object sender, EventArgs e) 
        { 
            Jxllt.DBUtility.DbHelperSQL.ConnDataBase("jxtmsg", ""); 
            SqlParameter[] dist ={ 
                                    new SqlParameter(strMobile,SqlDbType.VarChar,12), 
                                    new SqlParameter(ret,SqlDbType.Int) 
                                 }; 
            dist[0].Value = this.TxtMobile.Text.Trim().ToString(); 
            dist[1].Direction = ParameterDirection.Output; 
            sdr = Jxllt.DBUtility.DbHelperSQL.RunProcedure("Pad_MobilePath", dist); 
        } 
    当我运行的时候就会出现找不到存储过程"Pad_MobilePath"的问题,但是我数据库里面存在这个存储过程。数据库的连接也没有什么问题。这是怎么回事,该怎么解决
    ---
    主要从几个方面去考虑:
    1 检查数据库里是否真正存在存储过程
    2 检查数据库连接字符串是否正确
    3 检查数据库连接字符串里的用户是否具有访问这个存储过程的权限
    4 检查存储过程的架构名称dbo是否正确,这个一般的时候不会错,除非你自己建立了架构名称
      

  5.   

    这些我都已经检查过了,但是还是出现这个问题。
    4楼说:
         将 new SqlParameter(strMobile,SqlDbType.VarChar,12),  
          new SqlParameter(ret,SqlDbType.Int) 
         改为
          new SqlParameter(@strMobile,SqlDbType.VarChar,12),  
         new SqlParameter(@ret,SqlDbType.Int)  
    这个是不用改的,我已经设置了全局变量 private string strMobile=@moblie 
                                     private int ret=@ret
      

  6.   

    如果楼主要获得存储过程输出参数的值的时候,用的是datareader,必须要把datareader关闭以后才可以正常获取输出参数的值。
      

  7.   

    你给第二个参数指定value了?