2016-06-16 3 views
1

Я пытаюсь запустить этот этот запрос из Eclipse:MYSQL запрос с использованием сеанса работы пользователя в JAVA

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     HttpSession session = request.getSession(); 
     String name = session.getAttribute("user").toString(); 
     String query = "SELECT DISTINCT t.text, t.user, t.date" 
       + " FROM users u, tweets t, follows f" 
       + " Where t.parent is null" 
       + " AND u.id ="+name 
       + " AND (f.follower = u.id" 
       + " AND f.followed = t.user" 
       + " OR t.user = u.id)" 
       + " ORDER BY t.date DESC;"; 

Но я получаю следующее сообщение об ошибке:

Sesion(user):Takeshi 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'Takeshi' in 'where clause' 

Я могу себе представить, ошибка потому что я неправильно делаю сравнение между u.id и именем, но как мне это сделать? с каким-то особым характером? Заранее спасибо.

+0

вашей конкатенация является неправильной; попробуйте это '+" И u.id = '"+ name +"' "' – techspider

ответ

-1

Не могли бы вы, пожалуйста, используйте следующий фрагмент кода:

String name = session.getAttribute("user").toString(); 
name = name.replace("\'", "''"); 

String query = " SELECT DISTINCT t.text, t.user, t.date" 
       + " FROM users u, tweets t, follows f" 
       + " Where t.parent is null" 
       + " AND u.id = '"+name+"'" 
       + " AND (f.follower = u.id" 
       + " AND f.followed = t.user" 
       + " OR t.user = u.id)" 
       + " ORDER BY t.date DESC"; 
+0

Это сработало! Большое вам спасибо – Gera

+0

(cc: @Gera) ... и что происходит, когда 'name =" O'Neill "' ...? –

+0

@GordThompson Не могли бы вы посмотреть мой отредактированный ответ? –

Смежные вопросы