C# 使用SQL和C从不同的表中删除行

C# 使用SQL和C从不同的表中删除行,c#,sql,oledb,C#,Sql,Oledb,我试图从tblOrderAA中删除几行,从tblProInfo中删除一行:看图片 这是代码。我得到的错误是: 记录已被删除 **注意:**当我将此代码与SELECT instead DELETE一起使用时,它会工作。我猜级联删除可能已经打开。 仅从查询中的主表中删除,或关闭数据库中的级联。据我所知,不能使用一个查询从多个表中删除。如果启用了“级联删除”,则只需从产品表中删除,订单记录将自动删除。如果没有,我建议运行以下查询,以获取外键并从每个表中删除: "SELECT proInfoSerial

我试图从tblOrderAA中删除几行,从tblProInfo中删除一行:看图片

这是代码。我得到的错误是:

记录已被删除


**注意:**当我将此代码与SELECT instead DELETE一起使用时,它会工作。

我猜级联删除可能已经打开。
仅从查询中的主表中删除,或关闭数据库中的级联。

据我所知,不能使用一个查询从多个表中删除。如果启用了“级联删除”,则只需从产品表中删除,订单记录将自动删除。如果没有,我建议运行以下查询,以获取外键并从每个表中删除:

"SELECT proInfoSerialNum "+
" FROM tblProInfo " +
" WHERE (((tblProInfo.proInfoScienceName)='"+comboBox1.SelectedItem.ToString()+"'))"
将结果存储在变量中,例如serialNum


请注意,我省略了运行这些查询的实际C代码,只是给您提供了SQL,让您了解我将如何执行查询。

为什么不启用引用完整性并在数据库中启用级联删除?然后删除父记录,并自动删除与该键相关的子记录您是否有权访问SQL server management studio?级联删除是表之间关系的一个属性。管理关系的最简单方法是将所有表添加到数据库下的数据库关系图中。这些关系是连接线/箭头。右键单击这些属性。我不明白。还有,我该怎么做呢?@Noam650-你甚至可以把这两条用分号分隔的语句粘在一起,在一次往返中删除这两行。没错,还有很多选择。事实上,你可以把这三个粘在一起。我的建议是实现他要求的最简单的方法,而不需要太多的范式转换。我还建议使用参数而不是字符串连接,但这是OP的问题。
"SELECT proInfoSerialNum "+
" FROM tblProInfo " +
" WHERE (((tblProInfo.proInfoScienceName)='"+comboBox1.SelectedItem.ToString()+"'))"
// delete the order records first so they are not orphaned
"DELETE tblOrderAA.* "+
" FROM tblOrderAA " +
" WHERE (((tblOrderAA.orderAASerialPro)='"+serialNum.ToString()+"'))"

// Delete the product info
"DELETE tblProInfo.*"+
" FROM tblProInfo " +
" WHERE (((tblProInfo.proInfoSerialNum )='"+serialNum.ToString()+"'))"