簡體   English   中英

使用Java derby DB登錄Java

[英]Java login with Java derby 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)

和更多錯誤

我已經在數據庫中添加了用戶名和密碼,它必須檢查數據庫,如果用戶名和密碼正確,則必須轉到其他表格,否則必須顯示錯誤的密碼對話框,請有人幫我。

您在btnLoginActionPerformed()開始時將連接設置為null

Connection conn = null;

然后您嘗試在5行后使用它

prestmnt=conn.prepareStatement(sql);

在空引用上調用方法將導致NullPointerException

Java異常通常非常擅長告訴您哪里出了問題以及在哪里。 您在btnLoginActionPerformed方法中有一個NullPointerException。 它可以告訴您確切的行,盡管我們無法從您發布的內容中分辨出來。 prestmnt可能為null(SQL中的錯誤),或者查詢中可能存在錯誤,以便獲得空結果,因此Reltset為空。 調試它。

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);
            }
        });
    }


}
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                   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM