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"的问题,但是我数据库里面存在这个存储过程。数据库的连接也没有什么问题。这是怎么回事,该怎么解决
{
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"的问题,但是我数据库里面存在这个存储过程。数据库的连接也没有什么问题。这是怎么回事,该怎么解决
这个可能是 存储过程所有者问题! 就是你连接数据库的用户 和 创建存储过程的用户 不是同一个用户!
Exec 存储过程名 参数 看看有没问题
new SqlParameter(ret,SqlDbType.Int)
應該是new SqlParameter(@strMobile,SqlDbType.VarChar,12),
new SqlParameter(@ret,SqlDbType.Int)
看一下你連接的數據庫是否和存儲過程所在的數據庫相同
{
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是否正确,这个一般的时候不会错,除非你自己建立了架构名称
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