更新如果存在查询
我想更新记录,如果表中有一行。更新记录后,我想从我的方法返回TRUE。我正在使用以下查询。我正在使用SQL Server 2005.如何知道我的SQL查询是否更新了表?请告诉我。更新如果存在查询
Private Boolean UpdateTable()
{
string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND [email protected]) BEGIN ..... END"
}
谢谢。
每当执行批处理SQL,你应该被通知有多少行进行了修改/插入/更新,无论是从您例如返回值SqlCommand.ExecuteNonQuery()
电话:
Private Boolean UpdateTable()
{
int rowsUpdated = 0;
string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND [email protected]) BEGIN ..... END"
using(SqlConnection con = new SqlConnection("your-connection-string-here"))
{
using(SqlCommand cmd = new SqlCommand(sql, con))
{
con.Open();
rowsUpdated = cmd.ExecuteNonQuery();
con.Close();
}
}
return (rowsUpdated > 0);
}
,或者你可以在UPDATE
后查询您的SQL语句@@ROWCOUNT
属性:
...
BEGIN
UPDATE ........
DECLARE @Updated INT
SELECT @Updated = @@ROWCOUNT
END
您可以返回值,或检查的大于零或任何你的值想做。
谢谢。它看起来像我的SQL查询有问题。我怎样才能写JOIN条件的更新语句? UPDATE TABLEA SET CNUM = @cnum FROM TABLEA A,TABLEB B WHERE A.CID = B.CID AND A.CNUM为NULL且CID = @ cID – nav100 2010-07-25 21:13:22
谢谢。现在正在工作。这是我的查询。我不知道这是对的。 如果存在(选择A.CNUM FROM TABLEA A,TABLE B B WHERE A.CID = B.CID AND A.CNUM为NULL且CID = @ cID) BEGIN DECLARE @Updated INT UPDATE TABLEA SET CNUM ='test' FROM TABLEA A,TABLEB B WHERE A.CID = B.CID AND A.CNUM为NULL且CID = @ cID SELECT @Updated = @@ ROWCOUNT END – nav100 2010-07-25 21:22:04
@ nav100:在评论中放入大型代码片段并不是一件好事 - 他们不能被格式化看起来不错。你为什么不用你的最终解决方案更新你的原始问题(通过编辑)?这对我们所有人更有用!谢谢。 – 2010-07-26 05:03:12
如果使用关键字SET NOCOUNT ON,返回通过RowsAffected = obj.ExecuteNonQuery()影响的行可能会导致-1值。坚持通过OUTPUT参数或SELECT RowsAffected = @@ ROWCOUNT记录集来返回计数可能会更好 - 以防万一您使用SET NOCOUNT ON。 如果您要检索以下RowsUpdated版本,请不要使用SET NOCOUNT ON关键字,但恕我直言,我总是打开SET NOCOUNT ON;因为在我的标准和最佳实践书中,我一直都在使用它,所以它的价格非常昂贵。这就是为什么我想警告你。 – SnapJag 2010-07-29 22:49:47