2014-02-09 2 views
0

Я столкнулся с этой проблемой при попытке выполнить запросы запросов в программе. Однако подключение к базе данных без этого метода отлично работает, но это вызывает SQLException.Ошибка запроса MySQL Ошибка SQLException

String query = "SELECT EXISTS (SELECT * FROM usr WHERE username = admin AND password = pass)"; 
    boolean result; 
    Connection con = null; 
    try { 
     con = DriverManager.getConnection(url, username, password); 
     Statement stmt = (Statement) con.createStatement(); 
     ResultSet rs = stmt.executeQuery(query); 
     result = rs.next(); 
    } catch (SQLException e) { 
     throw new RuntimeException("Cannot connect to the database!", e); 
    } finally { 
     System.out.println("Closing the connection."); 
     if (con != null) 
      try { 
       con.close(); 
      } catch (SQLException ignore) { 
       System.out.println("Unknown Error Connecting to MySQL Server!"); 
      } 
    } 

Я привел запрос в метод, чтобы изолировать его. Любая помощь будет оценена по достоинству.

+0

Посмотрите на использование подготовленных заявлений: [Ссылка] (http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html): Они в значительной степени устраняют необходимость иметь дело с цитированием полей String/varchar. В вашем случае 'admin' и' pass' не имеют надлежащего окружения с одиночными кавычками. – Durandal

ответ

2

Как правило, поиск строк - вам нужно одинаковую цену значения - поэтому замените на 'admin' и 'pass' в разделе where.

+0

А вот это исправлено, но теперь оно всегда возвращает true, даже если значения неверны. Есть идеи? – Jake

+0

Нет, это должно сработать. Я попробовал очень похожий запрос в одной из моих баз данных MySQL, и он сработал. Теперь результат равен 1 (существует) или 0 (не существует). Возможно, вы захотите попробовать выполнить запрос непосредственно против базы данных - с помощью командной строки mysql. – mikemil

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