给你个例子。
CREATE PROCEDURE UP_PARTY_WRITEDOC
@id int,
@usercode varchar(60), --管理员可以指定gcode,也就是可以替某组发信息
@gcode varchar(60),
@subject varchar(255),
@summary varchar(2000),
@dockey varchar(255),
@imgurl varchar(255),
@catecode varchar(60),
@message text,
@ip varchar(20)
AS
declare @rolecode varchar(60),
@groupcode varchar(60),
@status tinyint,
@avatar bit,
@hasimg bit
set @imgurl=ltrim(rtrim(@imgurl))
set @hasimg=0
set @status=0
--公告是否审核
select @groupcode=groupcode from party_user where usercode=@usercode
select @rolecode=rolecode from party_usergroup where groupcode=@groupcode
if ( @rolecode = 'admin' )
begin
set @status=1 --管理员发的信息不用审核
if ( @gcode <>'' and @gcode <>'0' and @gcode <>@groupcode)
begin
set @groupcode=@gcode
set @avatar = 1
end
end
--如果id是0,那么是新怎增加的
if ( @id=0 )
begin
if ( @imgurl='' )
set @hasimg=0
else
set @hasimg=1
INSERT INTO party_document (usercode,rolecode,groupcode,catecode,subject,summary,dockey,imgurl,hasimg,createdt,status,ip,avatar,clicks ) VALUES ( @usercode,@rolecode,@groupcode,@catecode,@subject,@summary,@dockey,@imgurl,@hasimg,getdate(),@status,@ip,@avatar,0 )
set @id = @@identity
INSERT INTO party_document_detail (id,usercode,subject,message ) VALUES ( @id,@usercode,@subject,@message )
end
else
begin
if ( @imgurl='' )
begin
select @imgurl=imgurl,@hasimg=hasimg from party_document where id=@id --更新时,如果没传进图片来,则使用原来的项。
end
else
begin
set @hasimg=1
end
UPDATE PARTY_DOCUMENT
SET --usercode=@usercode,
--rolecode=@rolecode,
--groupcode=@groupcode,
catecode=@catecode,
subject=@subject,
summary=@summary,
status=@status,
ip=@ip,
avatar=@avatar,
dockey=@dockey,
imgurl=@imgurl,
hasimg=@hasimg,
modifydt=getdate()
WHERE ID=@ID
UPDATE PARTY_DOCUMENT_DETAIL
SET usercode=@usercode,
subject=@subject,
message=@message
WHERE ID=@ID
end
GO
这个错误表示dictionary中已经有你要添加的这一项了。
dictionary中是不允许有重复项的,这样才能按key索引到唯一一个value。
你在出错的地方查看dictionary里面有哪些数据,然后再看看添加的数据是什么。
如果是键值对集合(Dictionary)的话,它的键(key)是不允许重复的;如果是数据库 *** 作相关,主键是不能重复的。
c# 中添加数据到数据库中的三种方法:
利用SQL语句添加。
在SQL语句中提供了INSERT语句进行数据添加,其语法格式:
INSERT [Into] table_name[(column_list)] values (data_values)。
通过SqlParameter参数添加。
通过SqlParameter参数向数据库添加数据,主要使用SqlParameter类的一些属性和方法。
首先要创建SqlConnection类的一个对象,用来连接数据库,然后插入一个带参数的SQL命令。
通过存储过程添加。
存储过程可以过滤SQL语句中的非法字符,而且在创建时可直接在服务器上进行编译,所以执行起来比单个SQL语句快。通过存储过程添加数据,可以提高程序的执行效率,而且便于以后的维护。
利用存储过程向数据库添加记录时,首先要创建SqlConnection类的一个对象,用来连接数据库,然后使用SqlCommand对象的CommandType属性指定要执行的SQL文本命令为存储过程,并通过Add方法向SqlParameter中添加参数,最后使用SqlCommand对象的ExecuteNonQuery方法执行数据更新 *** 作。
if exists(select * from dbo.sysobjects where id=object_id('dbo.pro_adduser') and objectproperty(id,'isprocedure')=1) drop procedure pro_adduser go create procedure pro_adduser @orderid int, @uid varchar (20) as begin try begin transaction insert into a values(@orderid)--给第一个表数据 insert into b values(@orderid,@uid)--给第二个表数据 commit transaction end try begin catch rollback transaction end catch go 第一个表的id 是自增就这样,不是,在存储过程里加个id参数,放到第一个插入语句欢迎分享,转载请注明来源:内存溢出
评论列表(0条)