因此,我使用NetBeans创建了2个表单“注册和登录”表单,首先,用户必须通过输入唯一的用户名,密码进行密码注册,确认密码,然后单击按钮以显示一组图片,则每当用户单击按钮时,图片就会随机显示。问题是用户如何单击显示的一个或多个图像并将该图像以及输入的用户名和密码保存在数据库(localhost / phpmyadmin)中。
这里是用于用户注册的代码:
private void jButtonCreateActionPerformed(java.awt.event.ActionEvent evt) {
String UserName = jTextusername.getText();
String pass1 = String.valueOf(jPasswordpass1.getPassword());
String pass2 = String.valueOf(jPasswordpass2.getPassword());
if(verify())
{
if(!checkusername(UserName))
{
PreparedStatement ps;
ResultSet rs;
String registerUserQuery = "INSERT INTO `users`(`UserName`, `Password`, `imgPass`) VALUES (?,?,?)";
try {
ps = My_CNX.getConnection().prepareStatement(registerUserQuery);
ps.setString(1, UserName);
ps.setString(2, pass1);
if(ps.executeUpdate() != 0)
{
JOptionPane.showMessageDialog(null, "Your Account Has Been Created");
}
else{
JOptionPane.showMessageDialog(null, "Error: Check Your Information");
}
} catch (SQLException ex) {
Logger.getLogger(RegisterFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
这是登录代码:
private void jButtonLogActionPerformed(java.awt.event.ActionEvent evt) {
PreparedStatement st;
ResultSet rs;
String UserName = jTextUsernameLog.getText();
String Password = String.valueOf(jPasswordLog.getPassword());
String query = "SELECT * FROM `users` WHERE `UserName` = ? AND `Password` = ? AND `imgPass` = ?";
try {
st = My_CNX.getConnection().prepareStatement(query);
st.setString(1, UserName);
st.setString(2, Password);
rs = st.executeQuery();
if(rs.next()){
Form_After_Login form = new Form_After_Login();
form.setVisible(true);
form.pack();
}else{
JOptionPane.showMessageDialog(null, "Invalid Login: Username/Password Error", "Login Error", 2);
}
} catch (SQLException ex) {
Logger.getLogger(JFramePass.class.getName()).log(Level.SEVERE, null, ex);
}
}
在这里,我为每个图像使用“单击鼠标事件” :(示例)
private void jLabelimg_1MouseClicked(java.awt.event.MouseEvent evt) {
jLabelimg_1.getIcon();
}
数据库包含3列用户名(varchar 50),密码(varchar 50)和imgPass(LongBlob)。 我尝试使用“ FileInputStream”和“ setBinaryStream”,但没有用。 任何想法或建议我都会感激不尽:)。