я получил ошибку:Почему я должен объявлять переменную?
Must declare scalar variable '@20'
... при загрузке веб-страницы для извлечения данных запроса.
Я сделал несколько веб-запросов, но я не понимаю, почему переменная должна быть объявлена .
Это началось, когда я выписал код и загрузил страницу, он работал нормально. Сделал несколько изменений в несвязанных частях страницы, снова обновился и начал получать сообщение об ошибке. Мне никогда не приходилось иметь дело с объявить раньше.
var db = Database.Open("StarterSite");
var selectQueryString = "SELECT * FROM business_Customer WHERE [email protected]";
var memberid = Database.Open("StarterSite").QueryValue("SELECT memberid FROM business_Customer WHERE [email protected]",WebSecurity.CurrentUserName);
Это сценарий в верхней части моей страницы, прямо перед загрузкой html.
foreach (var row in db.Query(selectQueryString, memberid)) {...}
... это сценарий, который дает мне ошибку.
Но перед изменением и добавлением страницы переменная memberid
работала просто отлично. Значение представляет собой целое число, и я использовал его отдельно, чтобы подтвердить, что он работает. Я попытался изменить фрагмент кода на foreach (var row in db.Query(selectQueryString, (int) memberid)) {...}
и он дал мне ошибку, что сказал:
Cannot convert null to 'int' because it is a non-nullable value type
Я очень смущен ... Что объявляя должен делать с вызовом значение из базы данных SQL Server? Есть ли простое решение моей проблемы? Я читал другие сообщения stackoverflow, связанные с этим, но решения были написаны в синтаксисе SQL и использовали «Declare», у меня не хватило ресурсов, чтобы понять, как применить их решение к моей проблеме.
Я обнаружил, что было не так с моим сценарием. В нем отсутствовал внешний файл javascript, необходимый для другого набора значений, который каким-то образом имел какое-то отношение к ошибке. Но ... мой оригинал для моего первоначального вопроса, объявляет переменную что-то i нужно знать? Я не возражаю против его изучения (если есть ресурсы, которые вникают в детали того, для чего это необходимо, или когда они используются), но мне никогда не приходилось иметь дело с этим раньше ... это что-то «важное/ценное»?
Поскольку переменная * SQL * должна иметь значение, если оно используется в запросе .. в этом случае это вызвано тем, что параметр с именем '@ 20' не был связан. Возможно, это должно было быть 'memberid = @ 0' (что означает первый параметр, из переменной C# 'memberid', bound)? (Обратите внимание, как в другом запросе используется '@ 0', а не' @ 20': шаблоны имеют значение.) – user2864740
Первоначально я установил его для 0, но ошибка появилась «@ 0», после поиска в Интернете я понял, что переменная может быть чем угодно. Поэтому я дал ему случайное число, чтобы узнать, может ли он указать, откуда исходит ошибка. Единственное, что я понимаю, это 'selectQueryString' - причина моей ошибки. – user3681384