JDBC简单注册界面与数据库的连接)
一、开发环境
JDK1.8+Eclipse 2021-06 (4.20.0)+mysql 8.0.27+Navicat 15
二、步骤
1、在Eclipse里安装windowbuilder
查看你的Eclipse的版本在你的eclipse中点击Help->About Eclipse, 然后你就会看到
进入WindowBuilder的官网 找到你相应的版本并复制它的链接下面是官网链接: 官网下载
回到你的Eclipse,点击Help->Install New Software 进入以下界面:
重启完后就可以开始使用了
1.1、WindowBuilder的使用
在你的工程中右键点击 New–>other…出现如下界面
2、创建数据库和表
- 数据库名:nucdb20
登陆数据库,使用Navicat可视化操作数据库登陆进去你自己的数据库,新建一个数据库
- 表名:users
- 字段名及类型
username varchar(20)
userpsw varchar(20)
age int
保存表名这里起为users
3、Eclipse中新建项目
- 项目名:nucpro
- 将MySQL8.0 JDBC驱动程序jar包复制到项目根目录,类似下图:
MySQL8JDBC jar包下载地:JDBC JAR
按照你的操作系统下载即可。下载到本地后,然后复制到你的项目目录底下
3.1、右键点击jar包,将jar添加到构建路径,操作方式如下:
4、新建WindowBuilder应用
- 右键点击nucpro项目,新建WindowBuilder应用:包名:cn.edu.nuc,类名:Regist
进去后取个名字Finish即可。
5、双击src下cn.edu.nuc包中的Regist.java,切换到 Design窗口,设计GUI界面
自己设计即可,设计之前要清空布局
点这个按钮即可,其他部件单机添加到右边进行设计即可。
6、双击"注册"按钮,编写注册程序
源码:
package nucpro;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.Font;
import java.awt.HeadlessException;
import javax.swing.JTextField;
import java.awt.Color;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.awt.event.*;
public class Regist {
private JFrame frame;
private JTextField unametxt;
private JPasswordField upswtxt;
private JTextField agetxt;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Regist window = new Regist();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Regist() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 338);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("教务系统学生注册");
lblNewLabel.setBackground(new Color(0, 255, 255));
lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 24));
lblNewLabel.setBounds(109, 47, 202, 33);
frame.getContentPane().add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("学生用户名");
lblNewLabel_1.setBounds(20, 116, 73, 15);
frame.getContentPane().add(lblNewLabel_1);
unametxt = new JTextField();
unametxt.setBounds(87, 106, 208, 35);
frame.getContentPane().add(unametxt);
unametxt.setColumns(10);
JLabel lblNewLabel_2 = new JLabel("密码");
lblNewLabel_2.setBounds(20, 161, 58, 15);
frame.getContentPane().add(lblNewLabel_2);
upswtxt = new JPasswordField();
upswtxt.setBounds(87, 151, 208, 35);
frame.getContentPane().add(upswtxt);
JLabel lblNewLabel_3 = new JLabel("年龄");
lblNewLabel_3.setBounds(20, 204, 58, 15);
frame.getContentPane().add(lblNewLabel_3);
agetxt = new JTextField();
agetxt.setBounds(87, 194, 208, 35);
frame.getContentPane().add(agetxt);
agetxt.setColumns(10);
JButton btnNewButton = new JButton("注册");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// JDBC代码
// 1.去上三个文本框里的值
String uname = unametxt.getText();
String upsw = upswtxt.getText();
int age = Integer.parseInt(agetxt.getText());
try {
// 2.连接数据库
/**
* @description mysql8写法:url写法:jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8&serverTimezone=UTC&useUnicode=true&useSSL=false
* 驱动程序:driver: com.mysql.cj.jdbc.Driver
* mysql5写法:url写法:jdbc:mysql://localhost:3306/数据库名
* 驱动程序:com.mysql.jdbc.Driver
* */
Class.forName("com.mysql.cj.jdbc.Driver");// 注册JDBC驱动
String url = "jdbc:mysql://localhost:3306/nucdb20?characterEncoding=utf8&serverTimezone=UTC&useUnicode=true&useSSL=false ";
Connection conn = DriverManager.getConnection(url," 你的数据库用户名","你的数据库密码");
String sql = "INSERT INTO users VALUES(?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,uname);
pstmt.setString(2,upsw);
pstmt.setInt(3, age);
int flag = pstmt.executeUpdate();// 下达执行指令
if (flag ==1) {
JOptionPane.showMessageDialog(null, "注册成功","提示信息",JOptionPane.INFORMATION_MESSAGE);
}else {
JOptionPane.showMessageDialog(null, "注册失败","提示信息",JOptionPane.INFORMATION_MESSAGE);
}
} catch (HeadlessException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
} catch (SQLException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
});
btnNewButton.setBounds(140, 255, 97, 23);
frame.getContentPane().add(btnNewButton);
}
}
注意MySQL5与MySQL8 JDBC写法的不同。最后就可以运行看结果了。
数据鬼已存进去数据