我想更新表格中的一行:
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?
答案 0 :(得分:5)
实际上ExecuteNonQuery
会返回受影响的行数。你可以利用它:
int affectedRows = command.ExecuteNonQuery();
if (affectedRows == 0)
{
// show error;
}
else
{
// success;
}
答案 1 :(得分:4)
首先,如果您连接到(Microsoft) SQL Server ,则需要使用 SqlConnection
和 SqlCommand
< / strong> - 不是MySqlConnection
和MySqlCommand
。
其次 - ExecuteNonQuery()
调用返回一个int
,它定义了受影响的行数 - 读出它,如果它是0,则不进行更新。
int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected == 0)
{
// show message - no rows updated
}
答案 2 :(得分:1)
当SET NOCOUNT
为ON
时,不会返回计数。当SET NOCOUNT
为OFF
时,会返回计数。
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