public void UpdateCheckItemChoose(CheckItemChooseData data)
{
IDataParameter[] parameters = helper.GetSpParameterSet(cs,SQL_UPDATE);
helper.ExecuteNonQueryTypedParams(cs,SQL_UPDATE,data.CheckItemChoose[0]);
}
原本我是这样更新一条记录。现在要更新的记录的更新字段涉及到了记录的主键之一,如何处理类似,update table set a=xxx where a=bbb

解决方案 »

  1.   

    update table set a=xxx where a=bbb
    就是要这种效果啊是不是得送两个参数进存储过程,那ExecuteNonQueryTypedParams不就不能用了
      

  2.   

    数据库设计的有问题
    执行update table set a=xxx where a=bbb
    这句话有什么问题??ExecuteNonQueryTypedParams这个是什么东西啊?
      

  3.   

    asp程序写数据到数据库及修改出错原因是什么?
      

  4.   

    你可以用SqlHelper.ExecuteNonQuery(String, CommandType, String, SqlParameter[])
      

  5.   

    没遇到过,pk从来不改的,帮up---------------
    欢迊来到麦高网-私活兼职首选平台 www.mgao.net
      

  6.   

    你可以用SqlHelper.ExecuteNonQuery(String, CommandType, String, SqlParameter[])
    这样子要手工给参数赋值,太惨了
      

  7.   

    要想代主键修改
    这样是不行的update table set a=xxx where a=bbb只能先Delete table where a='xxx'
    在执行insert into table (a) values ('bbb')
      

  8.   

    做个触发器,在inserted里delete  * from table where 主键=(select 主键 from inserted)反正你insert语句里的要素全了,就先删了。改主键值???强。
      

  9.   

    主键是3个字段组成的??
    ----------------------------
    那你这个主键是没意义的,还不如加个字段做主键,格式可以是"主键1_主键2_主键3_...."或直接
    用“yyyymmdd_几位序号”或“业务类型_yyyymmdd_几位序号”,主键的值在触发器里做。
      

  10.   

    运行下面的语句(建个表及触发器):if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Get_ID_test1]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
    drop trigger [dbo].[Get_ID_test1]
    GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[test1]
    GOCREATE TABLE [dbo].[test1] (
    [tt] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [New_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [RQ] [datetime] NULL 
    ) ON [PRIMARY]
    GOSET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GO/*
     产生表test1字段New_ID的ID号
    ID号规则:YYYYMMDD+3位序号
    说明:
    表名:test1
    字段名:New_ID  {ID号字段名}
    字段名:RQ   {日期字段名}
    */
    CREATE TRIGGER Get_ID_test1 ON dbo.test1 
    FOR INSERT
    AS
    begin 
        update t set New_ID=(select  case when max(a.New_ID) is null then  ltrim(rtrim(cast(convert(char(8),getdate(),112) as char)))+'001' 
                  else left(max(a.New_ID),8)+right(right(ltrim(rtrim(max(a.New_ID))),3)+1000000000001,3)  end  
                  from test1 as a left join inserted as b on  left(a.New_ID,8)=convert(char(8),b.RQ,112) )
         from test1 as t inner join  inserted as i on t.RQ=i.RQ
    end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
    再运行:
    insert test1 (tt) values ('33')
    select * from test1
    -----------------------------------
    tt       New_ID            RQ
    33 20050909001 2005-09-09 10:31:55.977
    33 20050909002 2005-09-09 10:32:34.413
    33 20050909003 2005-09-09 10:32:34.803这个New_ID结构只是个简单的,可以在触发器里改New_ID字段的规则,