我從來沒有用過JAVA的數據庫,所以請耐心等待。我堅持MySQL查詢。 我正在創建一個GUI,用戶在訪問主頁面之前必須輸入他的電子郵件地址以及密碼。當用戶點擊提交按鈕時,數據庫連接被設置,並且有一個MySQL查詢選擇對應於輸入數據的字段。 使用PHP,我通常會使用$ _POST來獲取輸入的數據,但對於JAVA GUI,我已經瞭解到我需要保存輸入的數據,這是我所做的。 現在,在select語句之後,如果電子郵件地址和密碼正確,我應該顯示另一個窗口。 這就是我卡住的地方。另一個窗口不顯示,我不知道如何驗證登錄輸入的數據。JAVA等同於驗證登錄信息?
請找我的代碼如下:
LoginForm.java:
package interfaceGUI;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
public class LoginForm extends JFrame{
private JLabel loginEmail;
private JLabel loginPass;
private JTextField loginTextField;
private JPasswordField loginPassField;
private JButton submit;
private JPanel loginArea;
private JPanel buttonArea;
public LoginForm()
{
super("Party Supplies Rental");
setLayout(new FlowLayout());
loginEmail = new JLabel("Enter Your Email Address: ");
loginTextField = new JTextField(20);
loginPass = new JLabel("Enter Your Password: ");
loginPassField = new JPasswordField(20);
loginArea = new JPanel();
loginArea.setLayout(new GridLayout(2,2));
loginArea.add(loginEmail); //add to the JPanel
loginArea.add(loginTextField);
loginArea.add(loginPass);
loginArea.add(loginPassField);
add(loginArea); //add JPanel to the frame
submit = new JButton("Submit");
buttonArea = new JPanel();
buttonArea.setLayout(new GridLayout(1,2));
buttonArea.add(submit);
add(buttonArea);
ButtonHandler handler= new ButtonHandler();
submit.addActionListener(handler);
}
public class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == submit)
{
String loginText = loginTextField.getText();
char[] passText = loginPassField.getPassword();
String url = "jdbc:mysql://localhost/";
String dbName = "partySupplies";
String driver = "com.mysql.jdbc.Driver";
String username = "root";
String pw = "";
try
{
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url+dbName,username,pw);
//System.out.println("Connected");
Statement s = conn.createStatement();
//s.execute("INSERT INTO login VALUES('2', 'Krishna', 'Rohee', 'Grand Bois', '56546546', '[email protected]', 'daminimobbdou')");
s.execute("SELECT custEmailAdd, custPassword FROM login WHERE custEmailAdd = 'loginText' AND custPassword = 'passText'");
ResultSet rs = s.getResultSet();
int rowCount = rs.getRow();
//while loop here to check for login data
{
dispose();
Main main = new Main();
main.setSize(500,200);
main.setVisible(true);
conn.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
}
的Main.java:
package interfaceGUI;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame{
private JLabel label;
private JPanel forLabel;
private JButton birthdayCategory;
private JButton summerCategory;
private JButton halloweenCategory;
private JPanel forCategory;
public Main()
{
super("Home");
setLayout(new FlowLayout());
label = new JLabel("Choose the Party Category");
forLabel = new JPanel();
forLabel.setLayout(new GridLayout(1,3));
forLabel.add(label);
add(forLabel);
birthdayCategory = new JButton("Birthday Party");
summerCategory = new JButton("Summer/Festive Party");
halloweenCategory = new JButton("Halloween Party");
forCategory = new JPanel();
forCategory.setLayout(new GridLayout(1,3));
forCategory.add(birthdayCategory);
forCategory.add(summerCategory);
forCategory.add(halloweenCategory);
add(forCategory);
}
}
簡單地說,當在提交用戶點擊按鈕,我想驗證用戶輸入的數據,然後顯示Main.java窗口。 請指點我正確的方向。謝謝。
感謝您花時間回答我的問題。過了一會兒,我發現我傳遞了錯誤的值。通過僅檢查行數來簡化操作。我將使用PreparedStatement來代替。 –