我的SQL语句是这样的
ALTER PROCEDURE  [dbo].[Op_KongKeShi_SheDing_JiBenSheDing](@type1 int=0,@ShenHeTimeStart char(10)='',@ShenHeTimeEnd char(10)='',@ShenQingTianShuStart int=0 , @ShenQingTianShuEnd int=0, @KaiXueRiQiStart  datetime)
if @type1 =12/*修改数据到KeShiShenQing_CanShu*/
begin
declare @dcCount int=0
select distinct @dcCount =COUNT (*) from KeShiShenQing_CanShu where KaiXueRiQiStart =@KaiXueRiQiStart 
if @dcCount =0
update KeShiShenQing_CanShu set ShenHeTimeEnd =@ShenHeTimeEnd ,ShenHeTimeStart =@ShenHeTimeStart ,ShenQingTianShuEnd =@ShenQingTianShuEnd ,
ShenQingTianShuStart=@ShenQingTianShuStart ,KaiXueRiQiStart =@KaiXueRiQiStart 
end我的BLl层是 public static void BLL_Uptadae_JiBenSheDing(int ShenQingTianShuStart, int ShenQingTianShuEnd, string ShenHeTimeStart, string ShenHeTimeEnd, string (请问这里应该是什么)  KaiXueRiQiStart)
        {            SqlParameter[] SQlCMDpas ={
                                   new SqlParameter("@type1",SqlDbType.Int),  
                                   new SqlParameter("@ShenQingTianShuStart",SqlDbType.Int),  
                                   new SqlParameter("@ShenQingTianShuEnd",SqlDbType.Int ),
                                   new SqlParameter("@ShenHeTimeStart",SqlDbType.Char  ),
                                   new SqlParameter ("@ShenHeTimeEnd",SqlDbType .Char ),
                                   new SqlParameter ("@KaiXueRiQiStart",SqlDbType.DateTime),                               };
            SQlCMDpas[0].Value = 12;
            SQlCMDpas[1].Value = ShenQingTianShuStart;
            SQlCMDpas[2].Value = ShenQingTianShuEnd;
            SQlCMDpas[3].Value = ShenHeTimeStart;
            SQlCMDpas[4].Value = ShenHeTimeEnd;
            SQlCMDpas[5].Value = KaiXueRiQiStart;            DAL.PublicMethod myPublicMethiod = new DAL.PublicMethod();
            myPublicMethiod.DAL_OPTableDB_Par("Op_KongKeShi_SheDing_JiBenSheDing", SQlCMDpas);        }

解决方案 »

  1.   

    转.NET版吧,看样子应该是利用数据库类执行SQL存储过程
      

  2.   

    我觉得你的SQL语句可以改善下:if @type1 =12/*修改数据到KeShiShenQing_CanShu*/
    begin
    if (select count(1)from KeShiShenQing_CanShu where KaiXueRiQiStart =@KaiXueRiQiStart)=0 
    begin
    update KeShiShenQing_CanShu set 
    ShenHeTimeEnd =@ShenHeTimeEnd ,
    ShenHeTimeStart =@ShenHeTimeStart ,
    ShenQingTianShuEnd =@ShenQingTianShuEnd ,
    ShenQingTianShuStart=@ShenQingTianShuStart ,
    KaiXueRiQiStart =@KaiXueRiQiStart  
    ----有点奇怪的是,你的更新语句后面都没有条件,是所有的记录都更新吗?!
    end
    end
      

  3.   

    --string (请问这里应该是什么) KaiXueRiQiStart少一个参数type1 不是嘛。int ShenQingTianShuStart, int ShenQingTianShuEnd, string ShenHeTimeStart, string ShenHeTimeEnd,int type1 , string  KaiXueRiQiStart
      

  4.   

    UIL里面会有更新的内容,只更新我需要的内容
      

  5.   


    --所有的都可以看成是字符串类型,如:public static void BLL_Uptadae_JiBenSheDing(int ShenQingTianShuStart, int ShenQingTianShuEnd, string ShenHeTimeStart, string ShenHeTimeEnd, string  KaiXueRiQiStart)
      {  SqlParameter[] SQlCMDpas ={
      new SqlParameter("@type1",SqlDbType.Int),   
      new SqlParameter("@ShenQingTianShuStart",SqlDbType.Int),   
      new SqlParameter("@ShenQingTianShuEnd",SqlDbType.Int ),
      new SqlParameter("@ShenHeTimeStart",SqlDbType.Varchar,20),
      new SqlParameter ("@ShenHeTimeEnd",SqlDbType.Varchar,20),
      new SqlParameter ("@KaiXueRiQiStart",SqlDbType.Varchar,20),  };
      SQlCMDpas[0].Value = 12;
      SQlCMDpas[1].Value = ShenQingTianShuStart;
      SQlCMDpas[2].Value = ShenQingTianShuEnd;
      SQlCMDpas[3].Value = ShenHeTimeStart;
      SQlCMDpas[4].Value = ShenHeTimeEnd;
      SQlCMDpas[5].Value = KaiXueRiQiStart;  DAL.PublicMethod myPublicMethiod = new DAL.PublicMethod();
      myPublicMethiod.DAL_OPTableDB_Par("Op_KongKeShi_SheDing_JiBenSheDing", SQlCMDpas);  }