RETURN SCOPE_IDENTITY()返回-1

时间:2016-05-13 22:25:45

标签: c# sql-server

这已经困扰了几天而无法解决。

当我执行查询以将记录插入数据库时​​,我使用RETURN SCOPE_IDENTITY()并返回值-1。

RETURN SCOPE_IDENTITY() returns -1

这是调用方法

的代码
NewFolder newFolder = new NewFolder(myFilePath,  myFolderDesc);

tempInt = 0;
tempInt = balconette.AddNewFolder(newFolder);

MessageBox.Show("" + tempInt);

它被称为

的方法
private String connString = @"Data Source=ERNIE\SQLEXPRESS;Initial Catalog=RLT;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
private int tempValue;

public int AddNewFolder(NewFolder newFolder)
{
    tempValue = 0;

    using (SqlConnection sqlCon = new SqlConnection(connString))
    {
        SqlCommand sqlComm = new SqlCommand("usp_FileLocation_Insert", sqlCon);
        sqlComm.CommandType = CommandType.StoredProcedure;

        sqlComm.Parameters.Add("@FileLocPath", SqlDbType.NVarChar).Value = newFolder.StrFolderPath;
        sqlComm.Parameters.Add("@FileLocDesc", SqlDbType.NVarChar).Value = newFolder.StrFolderDesc;

        sqlCon.Open();
        tempValue = sqlComm.ExecuteNonQuery();
        sqlCon.Close();
    }

    return tempValue;
}

存储过程如下

ALTER PROCEDURE [dbo].[usp_FileLocation_Insert]
    @FileLocPath NVARCHAR(150),
    @FileLocDesc NVARCHAR(50)
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO FileLocation(FileLocationPath, FilelocationDesc)
    VALUES (@FileLocPath, @FileLocDesc)

    RETURN SCOPE_IDENTITY()
END

结果看起来像这样

Insert Results

有没有人可以解决一个可能的解决方案,但我也能找到它为什么会发生?

1 个答案:

答案 0 :(得分:1)

我相信你想要ExecuteScalar而不是ExecuteNonQuery。