一尘不染

检索scope_identity时,特定类型转换无效

sql

我收到异常消息:“特定的强制转换无效”,这是代码

con.Open();
string insertQuery = @"Insert into Tender (Name, Name1, Name2) values ('Val1','Val2','Val3');Select Scope_Identity();";

SqlCommand cmd = new SqlCommand(insertQuery, con);
cmd.ExecuteNonQuery();
tenderId = (int)cmd.ExecuteScalar();

阅读 151

收藏
2021-05-05

共1个答案

一尘不染

为了完整性,代码示例存在三个问题。

1)您通过调用ExecuteNonQuery和两次执行查询ExecuteScalar。结果,每次该函数运行时,您将在表中插入两条记录。您的SQL虽然是两个不同的语句,但将一起运行,因此您只需调用即可ExecuteScalar

2)Scope_Identity() 返回小数。您可以使用Convert.ToInt32查询的结果,也可以将返回值转换为十进制,然后转换为int。

3)确保将连接和命令对象包装在using语句中,以便正确处理它们。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    using (SqlCommand command = new SqlCommand(sql, connection))
    {
        connection.Open();
        int tenderId = (int)(decimal)command.ExecuteScalar();
    }
}
2021-05-05