首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用WebMatrix从sql server ce数据库中动态删除行时出错。

尝试使用WebMatrix从sql server ce数据库中动态删除行时出错。
EN

Stack Overflow用户
提问于 2013-01-01 03:46:25
回答 2查看 676关注 0票数 2

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

目标是(一旦提供了新的id)使用insert语句添加一个新条目,然后删除旧条目。重要的是要知道数据库本身内的主键(城市标记号)的数据类型是int,并且C#变量originalCTag被声明为var,但是在声明时被赋值为"“(空字符串),然后被赋值为所需目标主键值的字符串表示。

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

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

代码语言:javascript
复制
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = " + originalCTag);

^这说明在等号的索引处解析查询时出错。

代码语言:javascript
复制
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", originalCTag);

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

代码语言:javascript
复制
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", int.Parse(originalCTag));

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

代码语言:javascript
复制
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", originalCTag.ToString());

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

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

代码语言:javascript
复制
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = '" + originalCTag + "'");

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

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

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

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

代码语言:javascript
复制
var db = Database.Open("Vaccinations");

是的,疫苗接种是数据库的名称和该数据库中的(唯一)表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-01 04:10:33

组合的错误消息表明originalCTag持有的值不是数字。它很可能仍然是一个空字符串,因为这是您所说的最初分配给它的字符串。您应该检查用来为它赋值的代码是否执行了您认为它所做的事情。

票数 1
EN

Stack Overflow用户

发布于 2013-01-01 04:17:35

VoidKing这就是你应该如何做/构建你的参数化查询,就像我之前问你的那样,你是否可以在你的代码中粘贴你想要删除的一节的方法。我希望这个例子可以帮助你如何设置你的查询。还要注意我是如何使用ExecuteNonQuery vs Execute的

代码语言:javascript
复制
using (SqlCeConnection sqlConn = new SqlCeConnection("Your ConnectionString"))
{
  sqlConn.Open();

  using (SqlCeCommand sqlComm = new SqlCeCommand("Vaccinations WHERE [City Tag Number] = (@CityTagNumber)", sqlConn))
  {
    sqlComm.Parameters.AddWithValue("@CityTagNumber", originalCTag);
    sqlComm.ExecuteNonQuery();
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14105520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档