在sql语句中建立一张临时表, 再通过select语句 往临时表表内insert ,根据返回行判断记录是否存在sql 语句如下:
string sql = "DECLARE @T TABLE (id int) INSERT @T SELECT 1 FROM TBL WHERE ID = 1"用SqlCommand.ExecuteNonQuery 判断返回行数, 大于0 即表内存在 ID 为 1的记录不知道这种方法和判断返回结果集的方法哪个好
string sql = "DECLARE @T TABLE (id int) INSERT @T SELECT 1 FROM TBL WHERE ID = 1"用SqlCommand.ExecuteNonQuery 判断返回行数, 大于0 即表内存在 ID 为 1的记录不知道这种方法和判断返回结果集的方法哪个好
解决方案 »
- 求教 对象序列化与反序列化 的问题
- 请高手解决这个问题 Exception from hresult:0x8000ffff(e_unexpected)
- 新手提问
- C#求XML文件节点数据的最大值
- 如何将两个字节转换成数字?我用bitConvert试验过,好像不行啊
- 已用.NET一年,转眼硕士快毕业,想在.NET上找个方向完成硕士毕业论文,很久依然未果,大伙给点建议吧!
- 如何開啟一個新的web窗口,就像許多網站的彈出窗口那樣
- insert语句的用法?
- 关于dataGrid的问题
- 快过年了,想办法弄点钱! 现有1亿6000万左右个商业email地址出售,管理员大哥别删哟!
- 控件的 invoke是将多线程里的操作回调到主线程里操作吗?
- 一个简单的入门题,需要ADO.net的人帮忙。
因为临时表的方法是将检索出的结果,往一块内存区域中写入了一些内容,而 ExecuteNonQuery 显然没有写,结果不言自明我做了个实验
我假设 ID = 1 的命中记录有100万条,在此条件下进行了测试,发现,@T 使用的时间在 0.7~0.9 秒之间
而 ExecuteNonQuery 大约是 0.4~0.6 之间
如果是 SELECT TOP 1 FROM ... 呢
if exists(select 1 from tb where id=@id) -->@id是从外部传进来的
select 1 as hasvalue
else
select 0 as hasvalue然后用ExecuteScalar返回的记录是1表示有记录存在,0表示记录不存在.
我说的是单从算法优劣的角度考虑
如果从应用层面考虑 因为人类感知不到0.0000001秒的延迟 所以没有区别