我建了这么一个过程!! CREATE PROCEDURE [update_jxkhlxcsh_1] ( @dm_2 [int], @mc_3 [char](16)) AS UPDATE [派出所].[dbo].[jxkhlxcsh] SET [mc] = @mc_3 WHERE ( [dm] = @dm_2) GO select 'rowcount'=@@rowcount 这样对吗? 那我ASP。NET里面该怎么取啊??
ExecuteNonQuery就已经能返回更新的行数, 再从存储过程返回值有必要吗?
不用写存储过程也可以 :) 这样:update TableName set xx='xx' where xx='xx' select @@rowcount as 所影响行数select 语句查询结果为update语句更新的行数 如: ================================ use Northwind go select * from Orders select @@rowcount as 所影响行数查询结果 /* select result */ ... 所影响行数 1 830
CREATE PROCEDURE [update_jxkhlxcsh_1]
( @dm_2 [int], @mc_3 [char](16))
AS UPDATE [派出所].[dbo].[jxkhlxcsh]
SET [mc] = @mc_3 WHERE ( [dm] = @dm_2)
GO select 'rowcount'=@@rowcount
这样对吗?
那我ASP。NET里面该怎么取啊??
再从存储过程返回值有必要吗?
这样:update TableName set xx='xx' where xx='xx'
select @@rowcount as 所影响行数select 语句查询结果为update语句更新的行数
如:
================================
use Northwind
go
select * from Orders
select @@rowcount as 所影响行数查询结果
/*
select result
*/
...
所影响行数
1 830
command对象可以同时执行多条sql 语句,所以只需要联结一次数据库(.net就是强)。
当然写成存储过程是最好的方法。
比如说吧!
Try
mycommand.ExecuteNonQuery()
label1 = "数据" & dataarray.Item(0) & "存储成功!"
Catch Exp As SqlException
If Exp.Number = 2601 Or Exp.Number = 2627 Then
label1 = "这条数据已经录入!如果要修改请选择更新!"
Else
label1 = "不能存储" & dataarray.Item(0) & "数据!!"
End If
Return Exp.ToString & Exp.Number
Finally
mycommand.Connection.Close()
End Try
在这里面我怎么得到那个值呢??@@rowcount这个值??
然后开始更新。
最后提交。如果中途有哪怕一行没有提交,那么是会抛出System.Data.DBConcurrencyException的。如果发生异常,那么把事务进行回滚。然后执行错误处理。
SqlConnection conn = new SqlConnection("...");
SqlCommand comm = new SqlCommand();
comm.CommandText = "update ...;"+
"select @@rowcount";
comm.Connection = conn;
try{
conn.Open();
SqlDataReader sdr = comm.ExecuteReader();
if (sdr.Read()){
string rowcount = sdr.GetInt32(0).ToString();
int rc = int.Prase(rowcount);
...
}
}
catch(){
...
}
finally{
conn.Close();
}
ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconinputoutputparametersreturnvalues.htm