为什么总提示找不到存储过程?

longe329 2010-02-25 03:28:48
当我调用MSSql写的含参数的存储过程时;
调用的方法采用网上流传的第二种方法:
方法如下:
SqlDataAdapter da = new SqlDataAdapter("selecProj", conn);
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "selecProj ('12345678')";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
其中:
selecProj为存储过程名;('12345678')为传入的参数
可是执行时候总是提示:找不到存储过程:"selecProj ('12345678')"
请问为什么啊?
...全文
308 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
风骑士之怒 2010-02-25
  • 打赏
  • 举报
回复
引用 4 楼 longe329 的回复:
谢谢楼上几位回复,问题已经解决了:
我将程序改为:
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = new SqlCommand();
    da.SelectCommand.Connection = conn;
    da.SelectCommand.CommandText = "exec selecProj '12345678'";
其中 selecProj为MS sql中的存储过程名;'12345678'为输入的参数,
最后程序执行成功;


之所以没有使用SqlParameter逐个输入参数,是因为我的存储过程输入的参数太多,
一个个执行起来会太慢;

来晚了,将exec selecProj '12345678'作为一句sql语句来执行,对程序而言就不是对于存储过程的调用了,所以da.SelectCommand.CommandType = CommandType.StoredProcedure;去掉就好,
wangchangming 2010-02-25
  • 打赏
  • 举报
回复
da.SelectCommand.CommandText = "selecProj";
longe329 2010-02-25
  • 打赏
  • 举报
回复
谢谢楼上几位回复,问题已经解决了:
我将程序改为:
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "exec selecProj '12345678'";
其中 selecProj为MS sql中的存储过程名;'12345678'为输入的参数,
最后程序执行成功;


之所以没有使用SqlParameter逐个输入参数,是因为我的存储过程输入的参数太多,
一个个执行起来会太慢;
Formathead 2010-02-25
  • 打赏
  • 举报
回复
(1)执行一个没有参数的存储过程的代码如下:


SqlConnection conn=new SqlConnection(connectionString);
SqlDataAdapter da = new SqlDataAdapter();
da.selectCommand = new SqlCommand();
da.selectCommand.Connection = conn;
da.selectCommand.CommandText = "NameOfProcedure";
da.selectCommand.CommandType = CommandType.StoredProcedure;

(2)执行一个有参数的存储过程的代码如下


SqlConnection conn=new SqlConnection(connectionString);
SqlDataAdapter da = new SqlDataAdapter();
da.selectCommand = new SqlCommand();
da.selectCommand.Connection = conn;
da.selectCommand.CommandText = "NameOfProcedure";
da.selectCommand.CommandType = CommandType.StoredProcedure;
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.selectCommand.Parameters.Add(param);

若需要添加输出参数:


param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.selectCommand.Parameters.Add(param);

若要获得参储过程的返回值:


param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;
param.Value = Convert.ToDateTime(inputdate);
da.selectCommand.Parameters.Add(param);
longe329 2010-02-25
  • 打赏
  • 举报
回复
发帖子时候发错了
程序应该如下:
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "selecProj ('12345678')";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
回复楼上:
我也是参照网上这么写的,可看如下链接:
http://hi.baidu.com/ganggang0217/blog/item/12d43ad19a036cd1572c849a.html
hhc123 2010-02-25
  • 打赏
  • 举报
回复
da.SelectCommand.CommandText = "selecProj ('12345678')";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
没见过这么用的
去MSDN那好好看一下

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧