注册 登录
编程论坛 ASP.NET技术论坛

删除多个表的数据

huoqilin 发布于 2007-10-16 11:53, 1664 次点击
string userid = Request.QueryString["user_id"];
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["loveConnectionString"]);
SqlCommand delectCmd = new SqlCommand("delete from larchives where user_id='" + userid + "'", conn);
conn.Open();
delectCmd.ExecuteReader();
conn.Close();

根据一个传值,一次性删除多个表的数据,应该怎么写?
10 回复
#2
jxnuwy042007-10-16 13:10

执行删除操作可以这样写delectCmd.ExecuteReader()?应该是这样的吧delectCmd.ExecuteNonQuary().
如果像你说的想一次删除多个表的纪录,我想到的方法是写个存储过程,做个批量处理.即在存储过程中写多个删除语句,一次执行这么语句就等于删除了多个表的记录啊.

#3
bygg2007-10-16 13:51
多弄几个SqlCommand就行了。
#4
huoqilin2007-10-16 13:55
SqlCommand delectCmd = new SqlCommand("delete from 表1 where user_id='" + userid + "'", conn);
SqlCommand delectCmd = new SqlCommand("delete from 表2 where user_id='" + userid + "'", conn);
这两个怎么写在一起?
多写几个SqlCommand,会提示SqlCommand已经定义过。
#5
sean882007-10-16 14:18
以下是引用huoqilin在2007-10-16 13:55:48的发言:
SqlCommand delectCmd = new SqlCommand("delete from 表1 where user_id='" + userid + "'", conn);
SqlCommand delectCmd = new SqlCommand("delete from 表2 where user_id='" + userid + "'", conn);
这两个怎么写在一起?
多写几个SqlCommand,会提示SqlCommand已经定义过。

这样试一下:
SqlCommand delectCmd = null;
delectCmd = new SqlCommand("delete from 表1 where user_id='" + userid + "'", conn);
delectCmd = new SqlCommand("delete from 表2 where user_id='" + userid + "'", conn);

不过建议写成存储过程,在过程里写SQL将所有相关的数据删除.
CREATE PROCEDURE Proc_DeleteData
@user_id int
as
delete from 表1 where user_id=@user_id
delete from 表2 where user_id=@user_id
go


#6
bygg2007-10-16 14:25
提示定义了,就换个名字啊
#7
垃圾的沉默2007-10-16 14:26
LZ的想法应该要删除相关表的记录吧?
#8
师妃暄2007-10-16 16:53
存储过程当然是最好的解决方案
#9
梦灵儿2007-10-17 12:48

写一个触发器可以搞定
先删除外键的关系.,最后删除主键表

#10
huoqilin2007-10-17 13:55
存储过程不会用,不知道格式
不过还是谢谢大家了。
#11
smoon2007-10-18 17:24
SqlCommand delectCmd = new SqlCommand("delete from larchives where user_id='" + userid + "';delete from 人类 where 性别=’女‘", conn);
1