2015-02-06 5 views
1

Это мое соединение с базой данных классJava Войти с Java дерби DB

import java.sql.*; 

public class connectWithDB { 


public static void DBconnection(){ 

    Connection conn = null; 

    String url = "jdbc:derby://localhost:1527/"; 
    String dbName = "MyTinyShopDB"; 
    String driver = "org.apache.derby.jdbc.ClientDriver"; 
    String userName = "root"; 
    String password = "root"; 

    try { 
    Class.forName(driver).newInstance(); 
    conn = DriverManager.getConnection(url+dbName,userName,password); 

    //conn.close(); 

    } 

catch (Exception e) 
{ 
    e.printStackTrace(); 
    } 

} 

} 

Это код для кнопки входа

private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {           
    Connection conn = null; 
    PreparedStatement prestmnt = null; 
    ResultSet Reltset = null; 


     try { 
      String sql = "SELECT * FROM LOGINDETAILS WHERE LOGINID='"+txtFieldUserName.getText()+"'AND USERPASSWORD='"+txtFieldPassword.getText()+"'"; 
      prestmnt=conn.prepareStatement(sql); 
      Reltset=prestmnt.executeQuery(); 

      if (Reltset.next()){ 

      AdminMainForm adminform = new AdminMainForm(); 
      adminform.setVisible(true); 
      } 

      else 
      { 
      JOptionPane.showMessageDialog(null, "User Name or Password is Wrong"); 
      } 


     } catch (SQLException ex) { 
      Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 

Программа работает, но когда я нажимаю на кнопку входа эти ошибки появляются в netbeans

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at mytinyshop.Login.btnLoginActionPerformed(Login.java:159) 
at mytinyshop.Login.access$200(Login.java:18) 
at mytinyshop.Login$3.actionPerformed(Login.java:77) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java: 402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 

и больше ошибок

я добавил имя пользователя и пароль в базе данных он должен проверить базу данных, если имя пользователя и passsword правильны он должен Гото другую форму в противном случае он должен показать неправильный пароль диалог, пожалуйста, помогите мне ..

+0

Этот пример кода был бы широко открыт для SQL Injection: PLS читает это [http://stackoverflow.com/questions/4333015/does-the-preparedstatement-avoid-sql-injection](http://stackoverflow.com/questions/4333015/делает-The-PreparedStatement-избежать-SQL-инъекции) – jHilscher

ответ

0

Исключения в Java, как правило, очень хороши, говоря вам, что не так и где. У вас есть исключение NullPointerException в методе btnLoginActionPerformed; он сообщает вам точную строку, хотя мы не можем сказать, что вы опубликовали. prestmnt может быть нулевым (ошибка в SQL), или может возникнуть ошибка в запросе, так что вы получаете нулевые результаты, поэтому Reltset имеет значение null. Отлаживайте его.

1

Вы устанавливаете соединение с нулем в начале btnLoginActionPerformed()

Connection conn = null; 

И затем вы пытаетесь использовать его 5 строк позже

prestmnt=conn.prepareStatement(sql); 

Вызов метода на нулевой ссылки вызовет NullPointerException

0
import java.swing.*; 

import java.sql.*; 

Connection c=null; 
     PreparedStatement pst = null; 
     ResultSet r=null; 
     String s; 

     try 
     { 
      c=DriverManager.getConnection("jdbc:derby://localhost:1527/users","rishi","123"); 
      s="SELECT * FROM RISHI.USERDETAILS WHERE name='"+txt_name.getText()+"' AND password='"+txt_pass.getText()+"'"; 
      pst=c.prepareStatement(s); 
      r=pst.executeQuery(); 

        if(!txt_name.getText().trim().isEmpty()) 
        { 
        if(!txt_pass.getText().trim().isEmpty()) 
        { 
         if(r.next()) 
         { 
          JOptionPane.showMessageDialog(this,"Welcome"); 
         } 
         else 
         { 
          JOptionPane.showMessageDialog(this,"Username or password is wrong"); 
         } 
        } 
        else 
        { 
         JOptionPane.showMessageDialog(this,"Enter The password"); 
        } 
        } 
        else 
        { 
        JOptionPane.showMessageDialog(this,"Enter The Username"); 
        } 
       } 

     catch(Exception n) 
     { 
      JOptionPane.showMessageDialog(null,n.getMessage()); 
     } 
    }         


    public static void main(String args[]) { 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new login().setVisible(true); 
      } 
     }); 
    } 


} 
0
Connection c=null; 
     PreparedStatement pst=null; 
     ResultSet r=null; 
     String s; 

     try 
     { 
      c=DriverManager.getConnection("jdbc:derby://localhost:1527/users","rishi","123"); 
      s="SELECT * FROM RISHI.USERDETAILS WHERE name='"+txt_name.getText()+"' AND password='"+txt_pass.getText()+"'"; 
      pst=c.prepareStatement(s); 
      r=pst.executeQuery(); 

        if(!txt_name.getText().trim().isEmpty()) 
        { 
        if(!txt_pass.getText().trim().isEmpty()) 
        { 
         if(r.next()) 
         { 
          JOptionPane.showMessageDialog(this,"Welcome"); 
         } 
         else 
         { 
          JOptionPane.showMessageDialog(this,"Username or password is wrong"); 
         } 
        } 
        else 
        { 
         JOptionPane.showMessageDialog(this,"Enter The password"); 
        } 
        } 
        else 
        { 
        JOptionPane.showMessageDialog(this,"Enter The Username"); 
        } 
       } 

     catch(Exception n) 
     { 
      JOptionPane.showMessageDialog(null,n.getMessage()); 
     } 
    }         


    public static void main(String args[]) { 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new login().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton b; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JTextField txt_name; 
    private javax.swing.JTextField txt_pass; 
    // End of variables declaration     
} 

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

  • Нет связанных вопросов^_^