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();
}
}
您没有空格,而且似乎缺少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在主表上设置级联删除选项。