检查更新语句是否成功

时间:2018-02-19 10:19:46

标签: c# sql verify

我有以下方法将对象设置为特定状态(它将特定行的列值设置为'4':

C#

 void setObjectToFour(int objectID)
        {
            using (var conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString))
            using (var command = new SqlCommand("setObjectToFour", conn)
            {
                CommandType = CommandType.StoredProcedure
            })
            {
                command.Parameters.Add(new SqlParameter("@objectID", SqlDbType.Int)).Value = objectID;
                conn.Open();
                command.ExecuteNonQuery();

            }
        }

SQL:

...
AS
BEGIN
    Update [DB_OBJECT].[dbo].[object_table]
    SET status = 4
    WHERE id = @objectID

END

问题是DB_OBJECT数据库不是由我们管理的,而是一个软件的数据库。

以下问题是上面的查询并不总是有效(而且我们还没弄清楚原因)我正在考虑如果行更新,我们可以“强行”或“检查”。

按照以下方式进行操作是否明智?:

1 - 创建新的C#方法Check和检索对象状态的存储过程getStatus

2 - 我会将上面的两种方法都放在do while中,直到状态为4.

这是一种聪明的方法吗?

2 个答案:

答案 0 :(得分:7)

ExecuteNonQuery()方法返回受影响的行数。

int recordAffectd = command.ExecuteNonQuery();
if (recordAffectd > 0)
{
    // do something here  
}

答案 1 :(得分:0)

ExecuteNonQuery()根本不返回数据:仅受插入,更新或删除影响的行数。

试试这个

if (command.ExecuteNonQuery() !=  0)
{
    // more code 
}