如果表未更新,是否有方法显示错误消息

本文关键字:有方法 显示 错误 消息 是否 更新 如果 | 更新日期: 2023-09-27 17:53:25

我想更新表中的一行:

try
{
    string sql ="UPDATE TableNAme SET FirstName ='John' WHERE ID = 123";
    MySqlCommand command = new MySqlCommand(sql, connection);
    connection.Open();
    command.ExecuteNonQuery();
}
catch (Exception)
{
}
finally
{
    connection.Close();
}

基于ID(键),如果ID在表中,则正常工作,但如果ID不存在于表中,则不显示错误消息。

是否有一种方法可以让我知道是否没有找到ID ?

如果表未更新,是否有方法显示错误消息

实际上ExecuteNonQuery返回受影响的行数。你可以使用它:

int affectedRows = command.ExecuteNonQuery();
if (affectedRows == 0)
{
    // show error;
}
else
{
    // success;
}

首先,如果您连接到(Microsoft) SQL Server,您需要使用 SqlConnection SqlCommand -而不是MySqlConnectionMySqlCommand

其次- ExecuteNonQuery()调用返回一个int,它定义了受影响的行数-读取它,如果它为0,则没有进行更新。

int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected == 0)
{
    // show message - no rows updated
}

SET NOCOUNTON时,不返回计数。当SET NOCOUNTOFF时,返回计数。

https://msdn.microsoft.com/en-us/library/ms189837.aspx

其他方法是使用纯SQL或检查您的服务器默认设置SET NOCOUNT { ON | OFF }:

// Will return always 0  if SET NOCOUNT is ON.!!!
int affectedRows = command.ExecuteNonQuery();  

@@ROWCOUNT (Transact-SQL)https://msdn.microsoft.com/en-CA/library/ms187316.aspx

如果行数大于20亿,则使用ROWCOUNT_BIG https://msdn.microsoft.com/en-ca/library/ms181406.aspx

! !即使SET NOCOUNT为ON,也会更新@@ROWCOUNT函数。https://msdn.microsoft.com/en-us/library/ms189837.aspx

我个人会做SQL

      USE AdventureWorks2012;  
      GO  
      UPDATE HumanResources.Employee   
      SET JobTitle = N'Executive'  
      WHERE NationalIDNumber = 123456789  
      IF @@ROWCOUNT = 0  
      PRINT 'Warning: No rows were updated';  
      GO  

使用SQL的另一个参数是,如果您将此代码移动到存储过程。

SET NOCOUNT为ON时,返回值会出错。

我想是-1或者0