gpt4 book ai didi

c# - ExecuteScalar 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 22:00:30 24 4
gpt4 key购买 nike

我有一个使用事务的 sql 查询,它使用 return 来指示失败或成功,如下所示:

BEGIN

DECLARE @intErrorCode INT;
DECLARE @emailAutoIncrement INT;

BEGIN TRAN


INSERT INTO Accounts ( blabla, blabla2 )
VALUES ( somevalue, somevalue2 )

Select @intErrorCode = @@ERROR
if (@intErrorCode <> 0) GOTO PROBLEM

COMMIT TRAN
RETURN 1


PROBLEM:
if (@intErrorCode <> 0) Begin
Rollback Tran
RETURN 0
END

END

从代码中,我使用了 sqlCommand.ExecuteScalar() 认为这会给我 1 或 0,但这总是返回 false。另外,我遇​​到的另一个问题是,当 sql 中发生异常并且程序本应返回 0 时,它实际上返回了异常。

所以 RETURN 0 是无用的,因为它总是被异常覆盖?

补充一些信息,sql查询是一个存储过程,它是这样调用的:

                myCommand.CommandText = "createAccount";
myCommand.CommandType = CommandType.StoredProcedure;
//Add parameters here
using (myReader)
{
var test = myCommand.ExecuteScalar();
}

最佳答案

尝试SELECT而不是RETURN

BEGIN

DECLARE @intErrorCode INT;
DECLARE @emailAutoIncrement INT;

BEGIN TRAN


INSERT INTO Accounts ( blabla, blabla2 )
VALUES ( somevalue, somevalue2 )

SET @intErrorCode = @@ERROR
if (@intErrorCode <> 0) GOTO PROBLEM

COMMIT TRAN
SELECT 1


PROBLEM:
if (@intErrorCode <> 0) Begin
Rollback Tran
SELECT 0
END

END

我也变了

SELECT @intErrorCode = @@ERROR

SET @intErrorCode = @@ERROR

关于c# - ExecuteScalar 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10332598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com