[英]DELETE row from different tables using SQL and C#
我正在尝试从tblOrderAA中删除几行,并从tblProInfo中删除一行:(看图片)
这是代码。 我得到的错误是:
“记录已被删除”
private void DeleteFromDataBase()
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
string myDeleteQuery ="DELETE tblOrderAA.*, tblProInfo.*"+
" FROM tblProInfo INNER JOIN tblOrderAA ON tblProInfo.proInfoSerialNum = tblOrderAA.orderAASerialPro" +
" WHERE (((tblProInfo.proInfoScienceName)='"+comboBox1.SelectedItem.ToString()+"'))";
OleDbCommand myCommand = new OleDbCommand(myDeleteQuery);
myCommand.Connection = myConnection;
try
{
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
MessageBox.Show("success");
}
catch (Exception e)
{
MessageBox.Show("error in : \n" + e.ToString());
}
**注意:**当我将此代码与SELECT
使用时, DELETE
可以正常工作。
我无法通过一个查询从多个表中删除。 如果级联删除功能处于启用状态,则只需从“产品”表中删除,订单记录将自动删除。 如果没有,我的建议是运行以下查询以获取外键并从每个表中删除:
"SELECT proInfoSerialNum "+
" FROM tblProInfo " +
" WHERE (((tblProInfo.proInfoScienceName)='"+comboBox1.SelectedItem.ToString()+"'))"
(将结果存储在一个变量中,例如serialNum
)
// 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()+"'))"
请注意,我省略了实际的C#代码来运行这些查询,只是为您提供了SQL,以使您了解如何执行此操作。
我想级联删除可能已经打开。 仅从查询的主表中删除,或关闭数据库中的级联。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.