本篇博客运用到:
java连接mysql数据库连接
java对mysql的简单操作——修改数据
下面是修改密码系统的完整代码
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class password extends JFrame implements ActionListener{
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/message";
static final String USER = "root";
static final String PASS = "123456";
JButton jb1=new JButton("确定");
JLabel jl1=new JLabel("账号:");
JLabel jl2=new JLabel("原密码:");
JLabel jl3=new JLabel("新密码:");
JLabel jl4=new JLabel("确认密码:");
JTextField jt1=new JTextField();
JTextField jt2=new JTextField();
JTextField jt3=new JTextField();
JTextField jt4=new JTextField();
public password() {
//添加组件
this.add(jb1);
this.add(jt1);this.add(jt2);this.add(jt3);this.add(jt4);
this.add(jl1);this.add(jl2);this.add(jl3);this.add(jl4);
//设置组件位置和大小
jb1.setBounds(130, 250, 70, 35);
jt1.setBounds(105, 48, 180, 25);
jt2.setBounds(105, 98, 180, 25);
jt3.setBounds(105, 148, 180, 25);
jt4.setBounds(105, 198, 180, 25);
jl1.setBounds(70, 42, 70, 35);
jl2.setBounds(57, 92, 70, 35);
jl3.setBounds(57, 142, 70, 35);
jl4.setBounds(44, 192, 70, 35);
//设置窗口属性
jb1.addActionListener(this);
this.setTitle("修改密码");
this.setSize(350,350);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setLayout(null);
this.setResizable(false);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new password();
}
@Override
public void actionPerformed(ActionEvent e1) {
// TODO Auto-generated method stub
if(e1.getSource()==jb1) {
if(jt1.getText().equals("")||jt2.getText().equals("")) {
JOptionPane.showMessageDialog(null, "账号或原密码不能为空", "警告",JOptionPane.ERROR_MESSAGE);
}
else if(jt3.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入新的密码", "警告",JOptionPane.ERROR_MESSAGE);
}
else if(jt4.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请确认新的密码", "警告",JOptionPane.ERROR_MESSAGE);
}
else if(!jt3.getText().equals(jt4.getText())) {
JOptionPane.showMessageDialog(null, "两次密码不相同", "警告",JOptionPane.ERROR_MESSAGE);
}
else {
Connection conn = null;
Statement stmt = null;
PreparedStatement ps=null;
try{
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
String sql;
sql = "SELECT * FROM login";//搜索login表
ResultSet rs = stmt.executeQuery(sql);
int pd=0;
while(rs.next()){
int id = rs.getInt("id");//得到“id”列的值
String password = rs.getString("password");//得到“password”列的值
if(jt1.getText().equals(String.valueOf(id))) {
pd=1;
if(jt2.getText().equals(password)) {
try{
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
String sql1;
sql1="UPDATE login SET password=? WHERE id=?";//向login表里修改数据
ps=conn.prepareStatement(sql1);//修改数据预处理
ps.setString(1, jt3.getText());
ps.setString(2, String.valueOf(id));
ps.executeUpdate();//执行修改数据
ps.close();
stmt.close();
conn.close();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "密码修改成功!", "提示",JOptionPane.INFORMATION_MESSAGE );
}
else {
JOptionPane.showMessageDialog(null, "原密码输入错误,请重输", "警告",JOptionPane.ERROR_MESSAGE);
}
break;
}
}
if(pd==0) {
JOptionPane.showMessageDialog(null, "账号不存在,请重输", "警告",JOptionPane.ERROR_MESSAGE);}
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
}
}
}
代码运行截图:
运行的界面:
账号或密码为空时,修改失败:
新密码为空时,修改失败:
确认密码为空时,修改失败:
两次密码输入不同时,修改失败:
账号不存在时,修改失败:
原密码错误时,修改失败:
密码修改成功: