delete语句出现问题

本文关键字:问题 语句 delete | 更新日期: 2023-09-27 18:00:40

public static void DeleteThreads(int threadID)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("DELETE FROM dbo.Threads");
    sb.Append(" WHERE ThreadsID=@ThreadsID");
    string myConnectionString = AllQuestionsPresented.connectionString;
    using (SqlConnection myConnection = new SqlConnection(myConnectionString))
    {
        myConnection.Open();
        SqlCommand sqlCommand = new SqlCommand(sb.ToString(), myConnection);
        sqlCommand.Parameters.Add("@ThreadsID", SqlDbType.Int);
        sqlCommand.Parameters["@ThreadsID"].Value = threadID;
        sqlCommand.ExecuteNonQuery();
    }
}

它给了我这个错误:

The DELETE statement conflicted with the REFERENCE constraint "FK_Comments_Threads". The conflict occurred in database "model", table "dbo.Comments", column 'ThreadsID'.

语句已终止。

这是否应该修复该错误:

enter code here  public static void DeleteComments(int threadID)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("DELETE FROM dbo.Comments");
    sb.Append(" WHERE ThreadsID=@ThreadsID");
    string myConnectionString = AllQuestionsPresented.connectionString;
    using (SqlConnection myConnection = new SqlConnection(myConnectionString))
    {
        myConnection.Open();
        SqlCommand sqlCommand = new SqlCommand(sb.ToString(), myConnection);
        sqlCommand.Parameters.Add("@ThreadsID", SqlDbType.Int);
        sqlCommand.Parameters["@ThreadsID"].Value = threadID;
        sqlCommand.ExecuteNonQuery();
    }
}

delete语句出现问题

您没有空格,而且似乎缺少FROM关键字。

尝试:

sb.Append("DELETE FROM dbo.Threads");    
sb.Append(" WHERE ThreadsID=@ThreadsID");

此外,请注意:由于应用程序与数据库的紧密耦合,使用内联SQL通常是不好的。如果此应用程序用于任何重要目的,则应使用单独的数据访问层。

包括"From"和Space

 StringBuilder sb = new StringBuilder();
        sb.Append("DELETE from  dbo.Threads ");
        sb.Append("WHERE ThreadsID=@ThreadsID");

只需自己构建字符串即可查看问题所在。结果将是

DELETE dbo.ThreadsWHERE ThreadsID=@ThreadsID

您缺少FROM关键字和dbo后面的一个空格。线程。

sb.Append("DELETE FROM dbo.Threads ");    
sb.Append("WHERE ThreadsID=@ThreadsID");

您忘记在第一个语句后留出空格,忘记添加FROM,就是这样。

StringBuilder sb = new StringBuilder();
sb.Append("DELETE FROM  dbo.Threads  ");
sb.Append(" WHERE ThreadsID=@ThreadsID");

应该是吗

DELETE FROM ......

在注释和其他表上作为forign键传递的ThreadID,您必须首先删除与该ThreadID关联的记录。您可以从SQL Server Management Stidio在主表上设置级联删除选项。