[英]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.