在一个命令中创建多个SQL查询

时间:2018-06-08 06:55:33

标签: c# mysql

我有这个代码与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供我采用其他软件开发人员,因为我正在努力解决它,我需要帮助。

感谢。

1 个答案:

答案 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()