Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用Ado.net进行级联删除_Sql_Sql Server_Ado.net_Cascade_Cascading Deletes - Fatal编程技术网

Sql 用Ado.net进行级联删除

Sql 用Ado.net进行级联删除,sql,sql-server,ado.net,cascade,cascading-deletes,Sql,Sql Server,Ado.net,Cascade,Cascading Deletes,我有一个应用程序,需要从表Client public void Delete_Client(int _id_client) { Data.Connect(); using (Data.connexion) { string s = "Delete From CLIENT where id_client = " + _id_client; SqlC

我有一个应用程序,需要从表
Client

public void Delete_Client(int _id_client)
        {
            Data.Connect();
            using (Data.connexion)
            {
                string s = "Delete From CLIENT where id_client = " + _id_client;
                SqlCommand command = new SqlCommand(s, Data.connexion);
                try
                {
                    command.ExecuteNonQuery();
                }
                catch { }
            }
        }
Client
包含对另一个表的外部引用。因此,出现一个异常,表明必须进行级联删除


因此,如何更改代码以实现此目的(我正在使用sql server作为dbms)?

IMO您应该避免在删除级联时使用
,因为:

  • 您将无法控制正在删除的内容
  • 必须更改表引用以启用它
  • 使用参数化查询(作为全面建议)
  • 因此,让我们更改您的查询。我添加了
    ClientOrder
    作为示例表,该表保存了我们即将删除的客户端的外键引用。 首先,我删除所有链接到客户端的订单,然后删除客户端本身。其他所有桌子都应该这样 与
    客户端
    表链接的

    public void Delete\u客户端(int\u id\u客户端)
    {
    Data.Connect();
    使用(Data.connexion)
    {
    string query=“从客户端删除,其中id\u client=@clientId;从客户端删除,其中id\u client=@clientId”;
    SqlCommand=newsqlcommand(query,Data.connexion);
    command.Parameters.AddWithValue(“@clientId”,\u id\u client);
    尝试
    {
    command.ExecuteNonQuery();
    }
    catch{}//沉默错误是错误的,如果出现问题,你应该处理它
    }
    }
    
    参数化查询有许多优点。首先,它更安全(看看SQL注入攻击)。第二种类型由框架解析(特别有助于格式化
    DateTime