有时我必须删除不同表上的两条记录。我怎样才能以某种方式执行查询,如果一个失败,另一个不会执行,反之亦然。换句话说,只有当两个查询都成功时数据库才会更新,否则不会做任何更改。这样,如果我得到任何错误,我知道什么都没有改变。我在C#中执行此查询为:仅当所有查询都成功执行时才更改数据库
//qDelete is a string containing the query
// connection - SqlConnection
SqlCommand cmd = new SqlCommand(qDelete, connection);
try
{
var t = cmd.ExecuteNonQuery();
MessageBox.Show("Query succesfully executed \n \n" + "\n\n" + t + " records successfully deleted");
}
catch
{
//do something here to avoid having any changes to the database
}
这太棒了。我的sDelete字符串动态生成,唯一缺少的东西是将语句按正确的顺序排列。我发现我必须首先删除依赖表或表中的记录,然后再从另一个表中删除约束条件。我怎么能看到哪个表依赖于其他表将帮助我构建这个查询。我可以做一些事情,比如排序所有的字符串,然后放置那些没有约束的表格,然后放置其他的。我怎样才能找出哪个表取决于其他表使其更好?
你知道交易所用的版本是什么吗?它只是2008年还是以前的版本支持这个? – 2011-05-12 19:22:11
事务在数据库数据维护方面有点儿大问题,所以我希望你能在任何给你ADO.NET的框架中访问它们。当然.NET Framework 2.0和(VS2005)都会有事务支持。 – KeithS 2011-05-12 19:42:02
我的意思是SQL Server的版本,是基于框架的事务还是基于数据库? (数据库是否支持它)。 – 2011-05-12 19:46:06