【问题标题】:Why must i declare variable?为什么我必须声明变量?
【发布时间】:2015-06-26 14:17:49
【问题描述】:

我遇到了一个错误:

必须声明标量变量'@20'

...加载网页以获取查询数据时。

我进行了一些网络查询,但我不明白为什么需要声明变量

这开始了,当我写出代码并加载页面时,它运行良好。对页面的不相关部分进行了一些修改,再次刷新并开始出现错误。我以前从来没有处理过declare

var db = Database.Open("StarterSite");
var selectQueryString = "SELECT * FROM business_Customer WHERE memberid=@20";

var memberid = Database.Open("StarterSite").QueryValue("SELECT memberid FROM business_Customer WHERE email=@0",WebSecurity.CurrentUserName);

这是我页面顶部的脚本,就在 html 加载之前。

foreach (var row in db.Query(selectQueryString, memberid)) {...}

...是给我错误的脚本。

但在修改和添加到页面之前,memberid 变量工作得很好。该值是一个整数,我单独使用它来确认它是否有效。我尝试将 sn-p 更改为 foreach (var row in db.Query(selectQueryString, (int) memberid)) {...},它给了我一个错误,上面写着:

无法将 null 转换为 'int',因为它是不可为空的值类型

我非常困惑...声明与从 sql 数据库调用值有什么关系?我的问题有简单的解决方案吗?我阅读了与此相关的其他 stackoverflow 帖子,但解决方案是用 SQL 语法编写的,并且使用了“Declare”,没有足够的资源让我了解如何将他们的解决方案应用于我的问题。


我发现我的脚本出了什么问题。它缺少一个外部 javascript 文件,需要另一组值,这在某种程度上与错误有关。但是......我原来的问题是声明一个我需要知道的变量吗?我不介意研究它(如果有资源详细说明它的用途或使用时间),但我以前从未处理过它……它是“重要/有价值”的东西吗?

【问题讨论】:

  • 因为如果在查询中使用 SQL 变量 必须有一个值。在这种情况下,这是因为名为 @20 的参数未绑定。也许它应该是memberid=@0(意思是第一个参数,来自 C# 'memberid' 变量,绑定)? (请注意其他查询如何使用 @0 而不是 @20:模式很重要。)
  • 本来我把它设置为0,但是错误出现了'@0',在网上搜索之后,我意识到这个变量可以是任何东西。所以我给了它一个随机数,看看它是否能指出错误的来源。我唯一了解的是selectQueryString 是我的错误的原因。

标签: c# sql


【解决方案1】:

您应该使用@0 - 这代表第一个参数。

QueryQueryValue 都采用 2 个参数 - 一个 commandText 和一个参数数组。要指定参数在命令文本中的位置,请使用 @0@1 等。

例如:

var selectQueryString = "SELECT * FROM business_Customer WHERE memberid=@0";
db.Query(selectQueryString, memberid)

所以当您调用Query 时,它会将@0 替换为memberid 变量的值。

【讨论】:

  • @0@1 是我尝试的第一件事,这就是我开始使用@20 的原因,因为我不太确定哪个变量是问题所在。我知道错误来自selectQueryString,但是......我不知道为什么。我想也许我应该重写Query 以不包括第二个数据库查询,但一个是一个值,另一个是一个字符串......你还有其他想法吗?
  • 我怀疑您看到第二个错误,因为 memberid 为空。
  • 我也是这么想的。但是我在没有任何代码 sn-ps 的单独页面上加载了变量 memberid,它给了我想要的值。在我开始向页面添加更多编码之前,它第一次起作用。但是由于错误没有任何意义,我不确定我出了什么问题/哪里出错了......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2011-11-03
  • 1970-01-01
相关资源
最近更新 更多