簡體   English   中英

ExecuteNonQuery不返回值嗎?

[英]ExecuteNonQuery doesn't return value?

我正在嘗試編寫一個通用的Save函數,並且正在使用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;
}

我哪里錯了? 該代碼將值保存在數據庫中。

請刪除SP SET NOCOUNT ON中的行; 在SP中,您將獲得價值

ExecuteNonQuery返回受影響的行數。

如果您的SQL語句類似於

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

然后,您需要使用ExecuteScalar

對於UPDATE,INSERT和DELETE語句,返回值是受命令影響的行數。 當插入或更新的表上存在觸發器時,返回值包括插入或更新操作影響的行數以及受觸發器或觸發器影響的行數。 對於所有其他類型的語句,返回值為-1。 如果發生回滾,則返回值也為-1。 看一下msdn

但是當您說方法ExecuteNonQuery應該返回值時,我不明白您的意思。 如果要返回值,則應使用ExecuteScalar

Execute Scalar僅返回1行.. executenonquety僅返回受影響的行... ExecuteNonQuery不會給您返回值...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM