C# SQL删除查询无法正常工作
我的sqlC# SQL删除查询无法正常工作,c#,winforms,visual-studio-2010,sql-server-2008,C#,Winforms,Visual Studio 2010,Sql Server 2008,我的sqldelete查询中有一个逻辑错误,在visual studio中不会出现任何错误,并且没有删除数据库中的记录 下面是我的代码片段 SqlCommand cmd = new SqlCommand( @"DELETE FROM table_name WHERE item_id=" + itmIDs + " AND vendor_id=" + vendIDs + " AND dozen=" + selectedItmDzn +
delete
查询中有一个逻辑错误,在visual studio中不会出现任何错误,并且没有删除数据库中的记录
下面是我的代码片段
SqlCommand cmd = new SqlCommand(
@"DELETE FROM table_name
WHERE item_id=" + itmIDs +
" AND vendor_id=" + vendIDs +
" AND dozen=" + selectedItmDzn +
" AND quantity=" + selectedItmQty +
" AND total_price=" + selectedItmTotPrc + "",
con);
cmd.ExecuteNonQuery();
这是我的解释
SqlConnection con=newsqlconnection(“数据源=localhost;初始目录=invenotyb;集成安全=SSPI”)
我已确认其他动词(选择,更新,等)有效,只是删除的特定命令无效。我几乎可以保证您的连接字符串具有:
User Instance=true;AttachDbFileName=|Data Directory|...something.mdf;
如果是这种情况,停止这样做。AttachDbFileName功能实际上创建了数据库文件的副本。因此,在ManagementStudio或VisualStudio中打开的应用程序与通过连接字符串创建的应用程序不同。你的应用程序从副本中删除,没有异常(因为它工作了),你刷新了原始文件,看起来好像它不工作
请参见@marc_'s的答案:
如果不是这样,那么我怀疑(a)由于某个地方的try/catch
而忽略了错误,或者(b)您检查命令是否工作的方法是可疑的。例如,如果您依赖一个计数,并且where子句匹配零行,那么该命令工作,但没有删除任何内容,因此计数保持不变
如果这两个都不是真的,那么转到我答案的第一行。这里没有魔法,delete命令要么影响0行或更多行,要么返回异常。任何其他问题都只能通过错误的故障排除/调试来解释。鉴于此原始代码(通过我的格式):
让我们将此更改为:
string deleteQuery =
@"DELETE FROM table_name
WHERE item_id=" + itmIDs +
" AND vendor_id=" + vendIDs +
" AND dozen=" + selectedItmDzn +
" AND quantity=" + selectedItmQty +
" AND total_price=" + selectedItmTotPrc + "";
SqlCommand cmd = new SqlCommand(deleteQuery, con); /* set a breakpoint here */
cmd.ExecuteNonQuery();
设置断点并将该查询复制粘贴到此处的注释中,以便我们可以看到它。能否将SQL存储在变量中并显示控制台的结果。WriteLine(SQL)?您还可以检查您的连接字符串,并验证您没有使用愚蠢和误导性的功能,如
用户实例
和附件文件名
?您的数据库中的表名为表名
?@Pete如果是这样,我将放弃,请检查您的连接字符串。如果您使用的是AttachDbFileName
您的删除操作正常,但您检查的是错误的数据库副本(因为该连接字符串创建了一个副本)。@Musa这样编辑Q不会得到更多的结果。回答已经被问到的问题将是非常重要的。关于“你指的是哪两个”,我指的是两个选项:[在这方面寻求帮助]和[我知道我的问题不可能是错误的,显然我做的是正确的]。如果你做对了,你就不会问,或者,你知道<代码>控制台.WriteLine(deleteQuery)代码>:)你假设他有一个控制台要写。大假设。因此微笑。在将sql代码移动到应用程序之前,我通常在控制台中测试sql代码——通常正是出于这个原因。
string deleteQuery =
@"DELETE FROM table_name
WHERE item_id=" + itmIDs +
" AND vendor_id=" + vendIDs +
" AND dozen=" + selectedItmDzn +
" AND quantity=" + selectedItmQty +
" AND total_price=" + selectedItmTotPrc + "";
SqlCommand cmd = new SqlCommand(deleteQuery, con); /* set a breakpoint here */
cmd.ExecuteNonQuery();