自己改了很多个报错,后面也没显示显示哪里错,最后运行就错了
题目:
1.设计一个注册界面,如下图所示。根据界面,自己排版进行布局。
2.创建一个exper3的数据库,再创建一个user数据表,包括:id,username, pwd, repwd, sex, hobby,address,degree字段。把注册界面所填写信息,保存在exper3数据库中的user表中进行存储。
1.Sy1_1
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.*;
import ex1.User;
public class Sy1_1 extends JFrame{
JPanel p;
JLabel lblName,lblPwd,lblRePwd,lblSex,lblHobby,lblAdress,lblDegree;
JTextField txtName;
JPasswordField txtPwd,txtRePwd;
JRadioButton rb1,rb2;
JCheckBox ckb1,ckb2,ckb3,ckb4;
JTextArea txtAdress;
JComboBox<String> cmb1;
JButton btn1,btn2;
private static User User;
private UserService userService;
public Sy1_1(){
super("用户注册");
userService = new UserService();
p = new JPanel(new GridLayout(8,1));
lblName = new JLabel(" 用 户 名:");
lblPwd = new JLabel(" 密 码:");
lblRePwd = new JLabel("确认密码:");
lblSex = new JLabel("性别:");
lblHobby = new JLabel("爱好:");
lblAdress = new JLabel("地址:");
lblDegree = new JLabel("学历:");
txtName = new JTextField(20);
txtPwd = new JPasswordField(20);
txtRePwd = new JPasswordField(20);
rb1 = new JRadioButton("男",true);
rb2 = new JRadioButton("女");
ButtonGroup bg = new ButtonGroup();
bg.add(rb1);
bg.add(rb2);
ckb1 = new JCheckBox("阅读");
ckb2 = new JCheckBox("上网");
ckb3 = new JCheckBox("游泳");
ckb4 = new JCheckBox("旅游");
txtAdress = new JTextArea(3,20);
String str[] = {"小学","初中","高中","本科","硕士","博士"};
cmb1 = new JComboBox<String>(str);
cmb1.setEditable(true);
btn1 = new JButton("确定");
btn1.addActionListener(new RegisterListener());
btn2 = new JButton("重置");
btn2.addActionListener(new ResetListener());
JPanel p1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p1.add(lblName);
p1.add(txtName);
p.add(p1);
JPanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p2.add(lblPwd);
p2.add(txtPwd);
p.add(p2);
JPanel p3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p3.add(lblRePwd);
p3.add(txtRePwd);
p.add(p3);
JPanel p4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p4.add(lblSex);
p4.add(rb1);
p4.add(rb2);
p.add(p4);
JPanel p5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p5.add(lblHobby);
p5.add(ckb1);
p5.add(ckb2);
p5.add(ckb3);
p5.add(ckb4);
p.add(p5);
JPanel p6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p6.add(lblAdress);
p6.add(txtAdress);
p.add(p6);
JPanel p7 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p7.add(lblDegree);
p7.add(cmb1);
p.add(p7);
JPanel p8 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p8.add(btn1);
p8.add(btn2);
p.add(p8);
this.add(p);
this.setSize(310,350);
this.setLocation(200,300);
this.setVisible(true);
}
class RegisterListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
String Username = txtName.getText().trim();
String Password = new String(txtPwd.getPassword());
String rePassword = new String(txtRePwd.getPassword());
int Sex = Integer.parseInt(rb2.isSelected() ? "0" : "1");
String Hobby = (ckb1.isSelected() ? "阅读" : "") + (ckb2.isSelected() ? "上网" : "") +
(ckb3.isSelected() ? "游泳" : "") + (ckb4.isSelected() ? "旅游" : "");
String Address = txtAdress.getText().trim();
String Degree = cmb1.getSelectedItem().toString().trim();
if(Password.equals(rePassword)) {
User = new User(Username,Password,rePassword,Sex,Hobby,Address,Degree);
if(userService.saveUser(User)) {
System.out.println("注册成功");
}else {
System.out.println("注册失败!");
}
}else {
System.out.println("两次输入的密码不一致!");
}
}
}
class ResetListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
txtName.setText("");
txtPwd.setText("");
txtRePwd.setText("");
rb1.setSelected(false);
rb2.setSelected(false);
ckb1.setSelected(false);
ckb2.setSelected(false);
ckb3.setSelected(false);
ckb4.setSelected(false);
txtAdress.setText("");
cmb1.setSelectedItem(0);
}
}
public static void main(String[] args) {
new Sy1_1();
}
}
(2)DBUtil
import java.sql.*;
public class DBUtil {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
public Connection getConnection() throws ClassNotFoundException,SQLException,InstantiationException,IllegalAccessException{
String driver = Config.getValue("driver");
String url = Config.getValue("url");
String user = Config.getValue("user");
String pwd = Config.getValue("pwd");
Class.forName(driver);
con = DriverManager.getConnection(url,user,pwd);
return con;
}
public void closeAll() {
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pstmt!=null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public ResultSet executeQuery(String preparedSql,Object[] param) {
try {
pstmt = con.prepareStatement(preparedSql);
if(param!=null) {
for(int i =0;i<param.length;i++) {
pstmt.setObject(i+1, param[i]);
}
}
rs = pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public int executeUpdate(String preparedSql,Object[] param) {
int n = 0;
try {
pstmt = con.prepareStatement(preparedSql);
if(param!=null) {
for(int i =0;i<param.length;i++) {
pstmt.setObject(i+1, param[i]);
}
}
n = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return n;
}
public static void main(String[] args) {
}
}
User
package ex1;
public class User {
int id;
String Username;
String Password;
String rePassword;
int Sex;
String Hobby;
String Address;
String Degree;
public User() {
}
public User(String Username, String Password, String rePassword, int Sex, String Hobby, String Address, String Degree) {
this.Username = Username;
this.Password = Password;
this.rePassword = rePassword;
this.Sex = Sex;
this.Hobby = Hobby;
this.Address = Address;
this.Degree = Degree;
}
public User(int id, String Username, String Password, String rePassword, int Sex, String Hobby, String Address, String Degree) {
this.id = id;
this.Username = Username;
this.Password = Password;
this.rePassword = rePassword;
this.Sex = Sex;
this.Hobby = Hobby;
this.Address = Address;
this.Degree = Degree;
}
public Object getUsername() {
this.Username = Username;
return null;
}
public Object getPassword() {
this.Password = Password;
return null;
}
public Object getRepassword() {
this.rePassword = rePassword;
return null;
}
public Object getSex() {
this.Sex = Sex;
return null;
}
public Object getHobby() {
this.Hobby = Hobby;
return null;
}
public Object getAddress() {
this.Address = Address;
return null;
}
public Object getDegree() {
this.Degree = Degree;
return null;
}
}
UserService
import java.sql.ResultSet;
import ex1.User;
public class UserService {
public User findUserByName(String userName) {
DBUtil db = new DBUtil();
User user = null;
try {
db.getConnection();
String sql = "select * from user where Username = ?";
Object[] param = new Object[] {userName};
ResultSet rs = db.executeQuery(sql, param);
if(rs.next()) {
user = new User(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),
rs.getString(6),rs.getString(7),rs.getString(8));
}
}catch(Exception e) {
e.printStackTrace();
}finally {
db.closeAll();
}
return user;
}
public boolean saveUser(User user) {
boolean r = false;
DBUtil db = new DBUtil();
try {
db.getConnection();
String sql = "insert into user(id,Username,Password,rePassword,Sex,Hobby,Address,Degree)values(SEQ_USER.NEXTVAL,?,?,?,?,?,?,?)";
Object[] param = new Object[] {user.getUsername(),user.getPassword(),user.getRepassword(),user.getSex(),user.getHobby(),user.getAddress(),user.getDegree()};
if(db.executeUpdate(sql, param)>0) {
r = true;
}
}catch(Exception e) {
e.printStackTrace();
}finally {
db.closeAll();
}
return r;
}
}
结果报错: