Как устранить эту ошибку: типы данных text и varchar несовместимы в операторе равенства оператор? - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть таблица в Microsoft SQL Server Studio Server Management с именем Userdetails с именем столбца [Email address], имеющая тип данных varchar(50). Теперь я обращаюсь к этой переменной в jsp, чтобы сравнить ее с другой переменной с именем email2, тип данных которой text. К сожалению, я получаю ошибку.

Это только часть моего кода.

String str=request.getParameter("email2");
ResultSet rs = st.executeQuery("select [Email address],Username from Userdetails where [Email address]='" + str + "');

1 Ответ

1 голос
/ 29 ноября 2011

Первая проблема: вы включаете значения непосредственно в SQL. Не делайте этого - он просто просит SQL-инъекцию .

Вместо этого используйте подготовленный оператор с параметризованными значениями. Вы можете обнаружить, что этого достаточно, чтобы решить проблему.

PreparedStatement pst = conn.prepareStatement
   ("select [Email address], Username from Userdetails where [Email address]=?");

// This may give the same problem...
pst.setString(1, str);

// but this may fix it
// pst.setClob(1, new StringReader(str));

ResultSet results = pst.executeQuery();

(Очевидно, установить параметр только так или иначе.)

Не забудьте закрыть оператор в блоке finally.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...