2015-07-28 2 views
1

У меня есть базовый код, но он не работает. Я не знаю, почему. Я проверил весь код, печатая после каждой строки, но кажется, что executequery дает мне трудное время. Нужна помощь от экспертов пожалуйста ..executeQuery в postgresql с использованием netbeans?

{ 

    package com.pack.database.userinformation; 

    import java.sql.Connection; 
    import java.sql.ResultSet; 
    import java.sql.Statement; 

    /** 
    * 
    * @author Shokouh 
    */ 
    class UserDAO { 

     static Connection currentCon = null; 
      static ResultSet rs = null; 



      public static SurveyData login(SurveyData bean) { 

      //preparing some objects for connection 
      Statement stmt = null;  

      String username = bean.getUserName();  
      String password = bean.getPassword(); 

      String searchQuery = 
        "SELECT * FROM userinfo WHERE username='" 
          + username 
          + "' AND password='" 
          + password 
          + "'"; 

      // "System.out.println" prints in the console; Normally used to trace the process 
      System.out.println("Your user name is " + username);   
      System.out.println("Your password is " + password); 
      System.out.println("Query: "+searchQuery); 

      try 
      { 
       System.out.println("testssssssssssssssssssssssss"); 
      //connect to DB 
      currentCon = ConnectionManager.getConnection(); 
      stmt=currentCon.createStatement(); 
       System.out.println("1111111111111111111111"); 
      rs = stmt.executeQuery(searchQuery);  
      System.out.println("kkkkkkkkkkkkkkkkkkk"); 
      boolean more = rs.next(); 
       System.out.println("222222222222222222"); 

      // if user does not exist set the isValid variable to false 
      if (!more) 
      { 
       System.out.println("Sorry, you are not a registered user! Please sign up first"); 
       bean.setValid(false); 
      } 

      //if user exists set the isValid variable to true 
      else if (more) 
      { 

       String firstName = rs.getString("username"); 
       String lastName = rs.getString("lastname"); 

       System.out.println("Welcome " + firstName); 
       bean.setFirstName(firstName); 
       bean.setLastName(lastName); 
       bean.setValid(true); 
      } 
      } 

      catch (Exception ex) 
      { 
      System.out.println("Log In failed: An Exception has occurred! " + ex); 
      } 

      //some exception handling 
      finally 
      { 
      if (rs != null) { 
       try { 
        rs.close(); 
       } catch (Exception e) {} 
        rs = null; 
       } 

      if (stmt != null) { 
       try { 
        stmt.close(); 
       } catch (Exception e) {} 
        stmt = null; 
       } 

      if (currentCon != null) { 
       try { 
        currentCon.close(); 
       } catch (Exception e) { 
       } 

       currentCon = null; 
      } 
      } 

    return bean; 

      } 


    } 

} 

Выход:

{ 

     NFO: test was successfully deployed in 1,146 milliseconds. 
     INFO: Your user name is m.rezai 
     INFO: Your password is mina123 
     INFO: Query: SELECT * FROM userinfo WHERE username='m.rezai' AND password='mina123' 
    INFO: testssssssssssssssssssssssss 
    INFO: 1111111111111111111111 
    INFO: kkkkkkkkkkkkkkkkkkk 
    INFO: 222222222222222222 
    INFO: Sorry, you are not a registered user! Please sign up first 

} 
+0

Вам нужно указать название своей схемы Something.Users – FirebladeDan

+0

Было ли это решение работать? – FirebladeDan

+0

Спасибо за помощь :-) Я должен создать таблицу с небольшим словом в postgresql! –

ответ

0
String searchQuery = 
      "SELECT * FROM [SchemaNameGoesHere].Users WHERE username='" 
        + username 
        + "' AND password='" 
        + password 
        + "'"; 
+0

'[SchemaNameGoesHere] .' является недопустимым стандартным SQL и не будет работать в Postgres. SQL требует, чтобы идентификаторы указывались с использованием двойных кавычек (которые _then_ делают регистр чувствительным к регистру) –

1

На самом деле, проблема была в названии таблиц с заглавной буквы! Кажется, Postgres чувствителен к регистру. Итак, я создаю новую таблицу со всеми маленькими буквами. Это сработало :-)

String searchQuery = 
      "SELECT * FROM users WHERE username='" 
        + username 
        + "' AND password='" 
        + password 
        + "'"; 
+0

Postgres ** не ** чувствителен к регистру для идентификаторов, если вы не поместили их в двойные кавычки. 'SELECT * FROM users' совпадает с' SELECT * FROM USERS' или 'SELECT * FROM Users'. Пожалуйста, прочтите руководство для подробного объяснения: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS Сравнение строк, с другой стороны, чувствительно к данным. –

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