.net 当执行catch语句将失败的查询记录到日志表中时,如何使ExecuteOnQuery返回-1?

.net 当执行catch语句将失败的查询记录到日志表中时,如何使ExecuteOnQuery返回-1?,.net,sql-server,.net,Sql Server,我创建了一个存储过程,当查询成功执行或失败时,它将插入到日志表中。它看起来像这样: CREATE PROCEDURE [dbo].[sp_stackoverflow] AS BEGIN BEGIN TRY BEGIN TRANSACTION trans1 INSERT INTO tablename... INSERT INTO logtablename... COMMIT TRANSACTION trans1 END T

我创建了一个存储过程,当查询成功执行或失败时,它将插入到日志表中。它看起来像这样:

CREATE PROCEDURE [dbo].[sp_stackoverflow]
AS
BEGIN
    BEGIN TRY
    BEGIN TRANSACTION trans1
        INSERT INTO tablename...

        INSERT INTO logtablename...

        COMMIT TRANSACTION trans1
    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK TRANSACTION trans1
        END
        SET NOCOUNT ON
        INSERT INTO logtablename...
    END CATCH 
END
C代码看起来像这样

// isSuccessful is boolean
isSuccessful = cmd.ExecuteNonQuery() > 0;

我希望它在调用
ExecuteNonQuery()
时返回-1,这样
issucessful
将返回false,但它总是返回true,可能是因为在catch语句上插入日志表的查询。

我可以解释,基本上您希望根据ExecuteOnQuery方法返回的值设置'IsSuccessful'Bool字段的值;在这种情况下,您还可以尝试使用“output”参数,并在try块和Catch块中分别设置其不同的值;根据输出参数返回的值,您可以轻松判断操作是否成功,并相应地为IsSuccessful字段设置值。希望这对你有帮助