Спасибо, что нашли время, чтобы просмотреть мой пост. Я предоставил ссылки на то, что я прочитал, чтобы попытаться решить эту проблему, а также на учебные материалы, которые я использовал.
Ниже приведен код, с которым у меня возникла проблема. Я пробовал различные перестановки этого кода, чтобы заставить его работать, и я считаю, что основная проблема заключается в моей настройке переменной. Я запрашиваю внешнюю базу данных Oracle.
@{
var db = Database.Open("DBNAME");
var searchterm = "";
var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = @0";
if (!Request.QueryString["searchterm"].IsEmpty()){
searchterm = Request.QueryString["searchterm"];
}
var selectedData = db.Query(searchQuery);
var grid = new WebGrid(source: selectedData);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Movies</title>
</head>
<body>
<form method ="get">
<label for="searchterm">Please enter you UNIQUEVALUE</label>
<input type="text" name="searchterm" value="@Request.QueryString["searchterm"]" />
<input type="submit" value="Search UNIQUEVALUE" />
</form>
<div>
@grid.GetHtml()
</div>
</body>
</html>
Следующее будет работать так, как я хочу
@{
var db = Database.Open("DBNAME");
var searchterm = "";
var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = 'A00000000'";
if (!Request.QueryString["searchterm"].IsEmpty()){
searchterm = Request.QueryString["searchterm"];
}
var selectedData = db.Query(searchQuery);
var grid = new WebGrid(source: selectedData);
}
Но когда я меняю его на следующее, он ломается с этой ошибкой:
@{
var db = Database.Open("DBNAME");
var searchterm = "";
var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = @0";
if (!Request.QueryString["searchterm"].IsEmpty()){
searchterm = Request.QueryString["searchterm"];
}
var selectedData = db.Query(searchQuery,searchterm);
var grid = new WebGrid(source: selectedData);
}
System.Data.OracleClient.OracleException: ORA-01036: недопустимое имя/номер переменной
Line 7: searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = @0";
Line 8: }
***Line 9: var selectedData = db.Query(searchQuery,searchterm);***
Line 10: var grid = new WebGrid(source: selectedData);
Изменил строку, чтобы она выглядела так, как показано ниже. Даже попытка передать статическое значение в поле параметра у меня не работает.
var selectedData = db.Query(searchQuery,"A00000000");
Я проверил, что этот запрос возвращает данные с помощью Webmatrix, когда я жестко кодирую запрос.
var searchQuery= "SELECT * FROM DATABASENAME.DATABASETABLE WHERE UNIQUE ID = 'A00000000'"
var selectedData = db.Query(searchQuery);
Я пробовал несколько разных способов цитирования @0 и добавления одинарных кавычек к поисковому запросу после того, как значение было установлено. Любая помощь будет принята с благодарностью!
Обучение/Исследования/Прочитанные статьи:
Поиски в Stack Overflow:
System.Data.OracleClient.OracleException: ORA-01036: недопустимое имя/номер переменной HTML ORA-01036: недопустимое имя/номер переменной\ Недопустимое имя/номер переменной ASP ASP DB.Query()
Поиски в Google:
Параметры Db.Query
Статьи, прочитанные на переполнении стека:
System.Data.OracleClient.OracleException: ORA-01036: недопустимое имя/номер переменной (другой синтаксис/язык)
https://stackoverflow.com/questions/31398488/adding-parameters-to-db-query-using-webmatrix
Построение хорошего поискового запроса с использованием system.data.oracleclient
Win32Exception (0x80004005): время ожидания операции истекло
Подключение html-страниц + Razor к базе данных
Передача параметров в db.query с помощью arangojs
Статьи читаются в гугле:
Что такое эквивалент ObjectQuery.Parameters в DbQuery
Отн. ="nofollow noreferrer">https://social.msdn.microsoft.com/Forums/en-US/91c7fb6d-d1b8-4a7f-aec9-16336dbd619b/access-to-dbquery-parameters-for-logging?forum=adodotnetentityframework< /а>
Учебный материал, использованный для того, чтобы зайти так далеко:
http://www.asp.net/web-pages/overview/getting-started/introduction-aspnet-web-pages-2/displaying-data (прочитайте и активно программируйте с помощью этого руководства).