我有这个代码与SQLServer存储过程,我想单独运行c#代码。问题是我不知道如何用C#做到这一点。这是存储过程的代码;
USE [SSFASys]
GO
/****** Object: StoredProcedure [dbo].[userlogs] Script Date: 6/8/2018 2:19:30 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[userlogs]
@id int,
@fullname varchar(150),
@activitydetails varchar(200),
@userform int,
@datelog datetime
as
declare @userid int
declare @activityid int
begin
SELECT @userid=id FROM endusers WHERE (fullname = @fullname) AND (id = @id)
select @activityid=id from enduseractivitydetials where activitydet=@activitydetails
If (@activityid is null)
Begin
INSERT INTO enduseractivitydetials VALUES (@activitydetails)
Select @activityid =SCOPE_IDENTITY()
end
if not exists(SELECT enduserLOGS.userid FROM enduserLOGS INNER JOIN enduseractivitydetials ON enduserLOGS.activitydetails = enduseractivitydetials.id INNER JOIN endusers ON enduserLOGS.userid = endusers.id
WHERE (endusers.fullname = @fullname) AND (enduserLOGS.date = @datelog) AND (endusers.id = @userid) AND (enduseractivitydetials.activitydet = @activitydetails))
begin
insert into enduserLOGS values (@userid,@userform,@activityid,@datelog)
end
end
我将我的数据库从SQLServer切换到MySQL供我采用其他软件开发人员,因为我正在努力解决它,我需要帮助。
感谢。
答案 0 :(得分:0)
可以在一个块中一次执行多个语句;每个语句都必须以分号Stored Procedure
结尾。翻译SqlParameter
时,不得在此块中声明输入参数;只需使用SqlCommand
对象将Stored Procedure
作为const String TSQL = @"
DECLARE @userid INT;
DECLARE @activityid INT;
SELECT @userid = id FROM endusers WHERE (fullname = @fullname) AND (id = @id);
SELECT @activityid = id FROM enduseractivitydetials WHERE activitydet = @activitydetails;
IF (@activityid IS NULL)
BEGIN
INSERT INTO enduseractivitydetials
VALUES (@activitydetails);
SELECT @activityid = SCOPE_IDENTITY();
END
IF NOT EXISTS (
SELECT enduserLOGS.userid
FROM enduserLOGS
INNER JOIN enduseractivitydetials ON enduserLOGS.activitydetails = enduseractivitydetials.id
INNER JOIN endusers ON enduserLOGS.userid = endusers.id
WHERE (endusers.fullname = @fullname)
AND (enduserLOGS.date = @datelog)
AND (endusers.id = @userid)
AND (enduseractivitydetials.activitydet = @activitydetails)
)
BEGIN
INSERT INTO enduserLOGS VALUES (@userid,@userform,@activityid,@datelog);
END
END
";
using (SqlConnection cn = new SqlConnection("your connectionstring goes here"))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(TSQL))
{
cmd.Connection = cn;
cmd.Parameters.Add(new SqlParameter("@id", 123));
cmd.Parameters.Add(new SqlParameter("@fullname", "John Doe"));
cmd.Parameters.Add(new SqlParameter("@activitydetails", "Lorum ipsum ..."));
cmd.Parameters.Add(new SqlParameter("@datelog", DateTime.Now));
cmd.Parameters.Add(new SqlParameter("@userform", 456));
cmd.ExecuteNonQuery();
}
}
传递。
对于你问题中的networkFirst
,这将如下所示。
(因为我不能在这里执行它,你可能需要修复一些错别字;但你明白了。)
fetch()