c# - 尝试使用 WebMatrix 从 sql server ce 数据库中动态删除一行时出错

标签 c# sql-server sql-server-ce webmatrix

<分区>

每当更新主键值时,我试图从 sql-server-ce 数据库中删除旧行(基于主键值)。

目标是(一旦提供了新 ID)使用插入语句添加一个新条目,然后删除旧条目。知道数据库本身的主键(城市标签号)的数据类型是 int 可能很重要,并且 C# 变量 originalCTag 被声明为 var,但在其声明时分配了“”(空字符串),然后分配所需目标主键值的字符串表示形式。

虽然这应该是一项简单的任务,但问题是:

为什么 sql Action 查询不起作用?在 WebMatrix 中使用 C#,这是我尝试过的:

db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = " + originalCTag);

^这表示在等号索引处解析查询时出错。

db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", originalCTag);

^这表明输入字符串的格式不正确。

db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", int.Parse(originalCTag));

^这表明输入字符串的格式不正确。

db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", originalCTag.ToString());

^这(再一次)表明输入字符串的格式不正确(我们可以不使用 DELETE 语句参数化查询吗)?

所以...最后,我尝试了:

db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = '" + originalCTag + "'");

^这不会产生任何错误,但也不会执行它应该执行的操作(例如,删除行)。

此时,我有点不知所措。我希望这些语句中至少有一个能够执行所需的功能,如果不是几个的话。

显然我在这里遗漏了一些东西(如果那东西很明显我也不会感到惊讶)。如果这些语句中的任何一个“应该工作”,那么我的代码在 db.Execute 语句之前可能还有其他问题。

----------------更新---------------- 如果您想查看 db 声明语句:

var db = Database.Open("Vaccinations");

是的,Vaccinations 是数据库的名称和该数据库中的(唯一)表。

最佳答案

合并后的错误消息表明 originalCTag 持有的值不是数字。它很可能仍然是一个空字符串,因为这是您所说的您首先将其分配给的字符串。您应该检查用于为其分配有效值的代码是否按照您认为的那样进行。

关于c# - 尝试使用 WebMatrix 从 sql server ce 数据库中动态删除一行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14105520/

相关文章:

c# - 使用 .NET 的 Toggl API v8

c# - 更新面板 asp.net - 页面刷新

sql - 查找 "{"和 "}"中包含的文本并将其插入表中

sql-server-ce - iBatis.Net SQL Server 紧凑版 3.5

c# - 检索 ODBC 表并插入 SQL Server CE 数据库

c# - 在 Gtk# 中检索子部件的最佳方式

c# - 如何在我的 monotuch 项目中使用 JdSoft.Apple.Apns.Notifications

wpf - 由于 Windows 7 UAC,将 SDF 数据库从应用程序文件夹移动到用户文件夹?

sql - 从日期范围中提取天数

sql - 子查询返回超过 1 个值。当子查询后面有 =、!= 等时,这是不允许的