Я запускаю цикл, где я просматриваю записи в базе данных. Каждый раз, когда цикл работает, я сравниваю ответ пользователя со значением в моей базе данных. Строки таблицы называются answer2, answer3 ... и т. Д. Итак, я конкатенирую строку: («answer» + (i)) и использую строку с базой данных database.queryValue (string), чтобы поместить значение из базы данных в переменную. (в этом случае переменная cAltAnsX)loop возвращает, несмотря на разрыв
В конце концов цикл возвращает нулевое значение. Я хочу, чтобы мой цикл завершился до его повторного запуска. Я пытаюсь загрузить запрошенное значение в объект, а затем сравниваю его с DBNull.Value, затем попытаюсь выйти из цикла с break; Однако я все еще сравниваю 2 строки. то есть uAns.ToLower() == cAns.ToLower(). Мой код возвращает ошибку, поскольку он не может преобразовать значение Null в строку. Я хотел бы выйти из этих циклов, как только запрос загрузит нулевое значение (и до того, как скрипт попытается преобразовать его в строку).
Я попытался использовать break и вернуться, чтобы закончить строку, но я все равно получаю ту же проблему.
if (!Request.QueryString["uAnswer"].IsEmpty())
{
uAns = Request.QueryString["uAnswer"];
if (uAns.ToLower() == cAns.ToLower())
{
anBool = true;
}
else //Should cycle through all answers in alternativeAnswers table
{
for (var i = 0; i < 30; i++)
{
if (uAns.ToLower() == cAltAnsX.ToLower())
{
anBool = true;
}
else
{
altAnsXCom = altAnsXCom+1;
string x = altAnsXCom.ToString();
AltCommandTemp = string.Concat(altAns1Com, x, altAns2Com, sQTerm);
cAltAnsX = db.QueryValue(AltCommandTemp);
objcAA = db.Query(AltCommandTemp);
if (objcAA == DBNull.Value) {break;}
if (cAltAnsX == null) {break;}
}
}
if (anBool != true)
{
anBool = false;
}
}
Я не вижу петлю. Я что-то упускаю? –
Отсутствует сама петля. Это похоже на содержимое цикла как «в настоящее время». – StarPilot
Ваши переменные действительно должны быть названы лучше. Трудно следить за тем, что происходит в вашем коде. –