C#中,怎么调用存储过程来插入一条记录

C#中,怎么调用存储过程来插入一条记录,第1张

用存储过程插入记录和用insert 语句一样

给你个例子。

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参数,放到第一个插入语句


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11870671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存