Вы должны указать, какое соединение использовать в вашей команде.
cmd = New SqlCommand("select username,password from login where
username='" + TextBox1.Text + "'and password'" + TextBox2.Text + "' ", con)
Обратите внимание, что вы объединяете строку для построения SQL-запроса. Это ОЧЕНЬ ненадежно. Это приводит к инъекции SQL! Пожалуйста, как минимум двойные кавычки в строковой переменной и проверьте переменные int, которые являются переменными Но я настоятельно рекомендую вам использовать параметризованную переменную (см. Sp_executeSql).
cmd = New SqlCommand("select username,password from login where
username='" + TextBox1.Text.replace("'", "''") + "'and password'" + TextBox2.Text.replace("'", "''") + "' ", con)
Я разделил бы его немного и продвинул бы анализ случая в |
. Это - одно из преимуществ combinators и действительно LL (*) анализирующий в целом:
def factor: Parser[ExprTree] = ( wholeNumber ^^ { Number(_.toInt) }
| "(" ~> expr <~ ")"
| ident ^^ { Variable(_) } )
Я приношу извинения, если Вы не знакомы с синтаксисом подчеркивания. В основном это просто означает, "заменяют энным параметром на значение функции включения". Таким образом { Variable(_) }
эквивалентно { x => Variable(x) }
.
Другой бит волшебства синтаксиса здесь ~>
и <~
операторы вместо ~
. Эти операторы означают, что парсинг того термина должен включать синтаксис обоих parens, но результат должен быть только определен результатом expr
. Таким образом, "(" ~> expr <~ ")"
соответствия точно то же самое как "(" ~ expr ~ ")"
, но это не требует, чтобы дополнительный анализ случая получил внутреннее значение результата от expr
.