我有以下方法将对象设置为特定状态(它将特定行的列值设置为'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.
这是一种聪明的方法吗?
答案 0 :(得分:7)
ExecuteNonQuery()方法返回受影响的行数。
int recordAffectd = command.ExecuteNonQuery();
if (recordAffectd > 0)
{
// do something here
}
答案 1 :(得分:0)
ExecuteNonQuery()根本不返回数据:仅受插入,更新或删除影响的行数。
试试这个
if (command.ExecuteNonQuery() != 0)
{
// more code
}