关闭

c# 用存储过程

标签: 存储c#exceptionstringdatasetasp.net
278人阅读 评论(0) 收藏 举报
分类:

⑤写个带参数的C#存储过程吧,上面这个简单得有点惨不忍睹,不过还是蛮实用的.

  1. CREATE PROCEDURE dbo.AXzhz
  2. /*
  3. 这里写注释
  4. */
  5. @startDate varchar(16),
  6. @endDate varchar(16)
  7. AS
  8. select id from table_AX where commentDateTime>@startDate and commentDateTime< @endDate order by contentownerid DESC

注:@startDate varchar(16)是声明@startDate 这个变量,多个变量名间用【,】隔开.后面的SQL就可以使用这个变量了.

⑥我怎么在ASP.Net中调用这个带参数的存储过程?

  1. public static string GetCustomerCNameCount(string startDate,string endDate,ref DataSet ds)
  2. {
  3. SqlConnection con=ADConnection.createConnection();
  4. //-----------------------注意这一段--------------------------------------------------------------------------------------------------------
  5. SqlDataAdapter da=new SqlDataAdapter("AXzhz",con);
  6. para0=new SqlParameter("@startDate",startDate);
  7. para1=new SqlParameter("@endDate",endDate);
  8. da.SelectCommand.Parameters.Add(para0);
  9. da.SelectCommand.Parameters.Add(para1);
  10. da.SelectCommand.CommandType=CommandType.StoredProcedure;
  11. //-------------------------------------------------------------------------------------------------------------------------------
  12. try
  13. {
  14. con.Open();
  15. da.Fill(ds);
  16. con.Close();
  17. return "OK";
  18. }
  19. catch(Exception ex)
  20. {
  21. return ex.ToString();
  22. }
  23. }

注:把命令的参数添加进去,就OK了

⑦我还想看看SQL命令执行成功了没有.

  1. CREATE PROCEDURE dbo.AXzhz
  2. /*
  3. @parameter1 用户名
  4. @parameter2 新密码
  5. */
  6. @password nvarchar(20),
  7. @userName nvarchar(20)
  8. AS
  9. declare @err0 int
  10. update WL_user set password=@password where UserName=@userName
  11. set @err0=@@error
  12. select @err0 as err0

注:先声明一个整型变量@err0,再给其赋值为@@error(这个是系统自动给出的语句是否执行成功,0为成功,其它为失败),最后通过select把它选择出来,某位高人说可以通过Return返回,超出本人的认知范围,俺暂时不会,以后再补充吧

⑧那怎么从后台获得这个执行成功与否的值呢?

下面这段代码可以告诉你答案:

  1. public static string GetCustomerCName()
  2. {
  3. SqlConnection con=ADConnection.createConnection();
  4. SqlCommand cmd=new SqlCommand("AXzhz",con);
  5. cmd.CommandType=CommandType.StoredProcedure;
  6. para0=new SqlParameter("@startDate","2006-9-10");
  7. para1=new SqlParameter("@endDate","2006-9-20");
  8. da.SelectCommand.Parameters.Add(para0);
  9. da.SelectCommand.Parameters.Add(para1);
  10. con.Open();
  11. try
  12. {
  13. Int32 re=(int32)cmd.ExecuteScalar();
  14. con.Close();
  15. if (re==0)
  16. return "OK!";
  17. else
  18. return "false";
  19. }
  20. catch(Exception ex)
  21. {
  22. con.Close();
  23. return ex.ToString();
  24. }
  25. }

注:就是通过SqlCommand的ExecuteScalar()方法取回这个值,这句话是从MSDN上找的,俺认为改成:

int re=(int)cmd.ExecuteScalar();   99%正确,现在没时间验证,期待您的测试!!!

⑨我要根据传入的参数判断执行哪条SQL语句!!~

下面这个存储过程可以满足我们的要求,竟然是Pascal/VB的写法,Begin----End ,不是{},,,对使用C#的我来说,这个语法有点恶心.........

  1. ALTER PROCEDURE dbo.selectCustomerCNameCount
  2. @customerID int
  3. AS
  4. if @customerID=-1
  5. begin
  6. select contentownerid ,userCName,count(*) as countAll from view_usercomment group by contentownerid,userCName order by contentownerid DESC
  7. end
  8. else
  9. begin
  10. select contentownerid ,userCName,count(*) as countAll from view_usercomment where contentownerid=@customerID group by contentownerid,userCName order by contentownerid DESC
  11. end

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:431261次
    • 积分:5088
    • 等级:
    • 排名:第5448名
    • 原创:93篇
    • 转载:75篇
    • 译文:1篇
    • 评论:39条
    最新评论