C# 这是一个确切的问题吗?
我有两张桌子C# 这是一个确切的问题吗?,c#,sql,winforms,C#,Sql,Winforms,我有两张桌子 Inbox(id,accountid,emailfrom,emailsubject,emailbody,emaildate,attachment) Trash(as above) 当用户想要从inboxDataGridView中删除一行时,首先将该行复制到垃圾桶表中。我正在尝试此查询以首先复制行: string query = "INSERT INTO Trash(inboxid, accountid, emailfrom, subject, emailbody,emaildat
Inbox(id,accountid,emailfrom,emailsubject,emailbody,emaildate,attachment)
Trash(as above)
当用户想要从inboxDataGridView
中删除一行时,首先将该行复制到垃圾桶
表中。我正在尝试此查询以首先复制行:
string query = "INSERT INTO Trash(inboxid, accountid, emailfrom, subject, emailbody,emaildate,attachment) SELECT inboxid, accountid, emailfrom, subject, emailbody,emaildate,attachment FROM Inbox WHERE(inboxid = " + accountinfo.PEmailId + ")";(where accountinfo.PEmailId = selectedRow value
但是这个查询给了我一个错误
请指导我如何进行复制和删除。实际上,有一种简单而更好的方法可以完成您想要的内容,那就是在删除时写入触发器。你的数据库是什么?SQL Server 我假设您的数据库是Sql Server。。请在您的数据库中尝试以下触发器
这应该可以: 插入:
INSERT INTO Trash(id, accountid, emailfrom, subject, emailbody,
emaildate,attachment)
SELECT id, accountid, emailfrom, subject, emailbody,emaildate,attachment
FROM Inbox
WHERE id = @id
删除:
DELETE Inbox
WHERE id = @id
您需要执行这些语句,或者作为两个单独的命令来执行,具体取决于您是否要在语句之间执行其他操作。@id参数应作为命令参数提供,以便执行
如果希望解决方案的一部分位于数据库端,可以将其创建为存储过程或创建触发器。在使用触发器方法的情况下,Delete语句足以从程序中执行
DELETE Inbox
WHERE id = @id