ExecuteNonQuery没有返回值

本文关键字:返回值 ExecuteNonQuery | 更新日期: 2023-09-27 17:49:27

我正在尝试编写一个常见的保存函数,我使用Dbcommand。我的代码是:

private static int Save(CommandType commandtype, string commandText, SqlParameter[] commandParameters, bool p)
{
    int id = -1;
    using (DbConnection connection = factory.CreateConnection())
    {
        connection.ConnectionString = connectionString;
        using (DbCommand command = factory.CreateCommand())
        {
            command.Connection = connection;
            command.CommandType = commandtype;
            command.CommandText = commandText;
            foreach(SqlParameter pa in commandParameters)
            {
                command.Parameters.Add(pa);
            }
            connection.Open();
            id = command.ExecuteNonQuery();
        }
    }
    return id;
}

我哪里错了?代码将值保存在数据库中。

ExecuteNonQuery没有返回值

请删除SP 设置NOCOUNT ON;中的SP,这样您将获得值

ExecuteNonQuery返回受影响的行数。

如果你的SQL语句类似于

 insert into ... values ...
 select @@identity

那么你需要用ExecuteScalar代替

对于UPDATE、INSERT和DELETE语句,返回值是受该命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也是-1。看msdn

但是我不明白你是什么意思,当你说方法ExecuteNonQuery应该返回值。如果你想返回一个值,你应该使用ExecuteScalar

Execute Scalar只返回1行,executenonquety只返回受影响的行…