存储过程两种写法,一种不行??

SinGooCMS 2007-01-27 04:08:27
通过日记时间得到日记本的所有记录
CREATE procedure getdiarybook
@createDate1 varchar(10)
as
if @createDate1=''
select * from
diarybook
where convert(varchar(10),CreateDate)=(select convert(varchar(10),max(CreateDate)) as ss from diarybook)
order by DiaryID desc
else
select * from
diarybook
where
(select CONVERT(varchar(10),CreateDate,120))=@createDate1
order by
CreateDate desc
GO


在cs里写的方法

public DataSet GetDiaryBook(string createdate)
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["connectionstring"]);
SqlDataAdapter da = new SqlDataAdapter("getdiarybook '"+createdate+"'" , cn);
DataSet ds = new DataSet();
da.Fill(ds, "mytable1");
cn.Close();
return ds;
}
这样就可以调用过程成功.但这样不安全


换成第2种方法写
public DataSet GetDiaryBook(string createdate)
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["connectionstring"]);
SqlDataAdapter da = new SqlDataAdapter("getdiarybook " , cn);
da.SelectCommand.CommandType = CommandType.StoredProcedure();
da.SelectCommand.Parameters.Add("@createDate1",SqlDbType.VarChar,10).Value=createdate;
DataSet ds = new DataSet();
da.Fill(ds, "mytable1");
cn.Close();
return ds;
}
老是说"需要参数@createDate1,但参数明明是写了的?不知道什么原因?

高人看看
...全文
182 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SinGooCMS 2007-01-29
  • 打赏
  • 举报
回复
..顶
csharpok007 2007-01-27
  • 打赏
  • 举报
回复
SinGooCMS 2007-01-27
  • 打赏
  • 举报
回复
....顶!
lr21shiji 2007-01-27
  • 打赏
  • 举报
回复
....顶
vengair 2007-01-27
  • 打赏
  • 举报
回复
我还是认为多半是 createdate 本身没值过来
跟踪一下
SinGooCMS 2007-01-27
  • 打赏
  • 举报
回复
....顶
swswssw 2007-01-27
  • 打赏
  • 举报
回复
设置断点跟踪一下,可能是你createdate这个变量有问题吧
SinGooCMS 2007-01-27
  • 打赏
  • 举报
回复
极度郁闷中.....还是不行啊.


过程 'getdiarybook' 需要参数 '@createDate1',但未提供该参数。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 过程 'getdiarybook' 需要参数 '@createDate1',但未提供该参数。
vengair 2007-01-27
  • 打赏
  • 举报
回复
第二种这样加参数
da.SelectCommand.Parameters.Add("@createDate1",SqlDbType.VarChar,10)
da.SelectCommand.Parameters["@createDate1"].Value=createdate;

如果是2.0
直接用一句替换上面两句

da.SelectCommand.Parameters.AddWithValue("@createDate1", createdate);
北京的雾霾天 2007-01-27
  • 打赏
  • 举报
回复
da.SelectCommand.Parameters.Add("@createDate1",SqlDbType.VarChar,10).Value=createdate;
---------------

SqlParameter par = da.SelectCommand.Parameters.Add("@createDate1",SqlDbType.VarChar,10);

par.Value = createdate;
SinGooCMS 2007-01-27
  • 打赏
  • 举报
回复
突然发现.没有"编辑"这样的按钮....

上面写错了一个地方
应该是:exec getdiarybook '"+createdate+"'"

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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