如果表未更新,是否有方法显示错误消息
本文关键字:有方法 显示 错误 消息 是否 更新 如果 | 更新日期: 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
-而不是MySqlConnection
和MySqlCommand
。
其次- ExecuteNonQuery()
调用返回一个int
,它定义了受影响的行数-读取它,如果它为0,则没有进行更新。
int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected == 0)
{
// show message - no rows updated
}
当SET NOCOUNT
为ON
时,不返回计数。当SET NOCOUNT
为OFF
时,返回计数。
其他方法是使用纯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