public class Regist extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField text_confirm;
private JTextField text_usr;
private JTextField text_pwd;
private JButton btn_save,btn_cancel;
private JLabel user,passwd,confirm;
private Connection conn;
private Statement statement;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Regist frame = new Regist();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Regist() {
super("注册新用户");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
user = new JLabel("用 户 名");
user.setBounds(57, 36, 54, 15);
contentPane.add(user);
passwd = new JLabel("密 码");
passwd.setBounds(57, 76, 54, 15);
contentPane.add(passwd);
confirm = new JLabel("确认密码");
confirm.setBounds(57, 121, 54, 15);
contentPane.add(confirm);
text_usr = new JTextField();
text_usr.setBounds(141, 33, 155, 21);
contentPane.add(text_usr);
text_usr.setColumns(10);
text_pwd = new JTextField();
text_pwd.setBounds(141, 73, 155, 21);
contentPane.add(text_pwd);
text_pwd.setColumns(10);
text_confirm = new JTextField();
text_confirm.setBounds(141, 118, 155, 21);
contentPane.add(text_confirm);
text_confirm.setColumns(10);
btn_save = new JButton("确定");
btn_save.setBounds(79, 171, 93, 23);
contentPane.add(btn_save);
this.btn_save.addActionListener(this);
btn_cancel = new JButton("取消");
btn_cancel.setBounds(256, 171, 93, 23);
contentPane.add(btn_cancel);
this.btn_cancel.addActionListener(this);
}
public Connection getConnection() throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sign","root","514519");
return conn;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn_save){
if(text_usr.getText().isEmpty()&&text_pwd.getText().isEmpty())
JOptionPane.showMessageDialog(this, "请填写用户名和密码");
String sql="insert into signs values ('"+text_usr.getText()+","+text_pwd.getText()+"')";
try {
conn=getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
statement=conn.createStatement();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
statement.executeUpdate(sql);
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
statement.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
conn.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
if(e.getSource()==btn_cancel){
}
}
}
运行的时候说Column count doesn't match value count at row 1
我数据库中的user 和password都是varchar类型
还有就是这行代码中的引号问题 String sql="insert into signs values ('"+text_usr.getText()+","+text_pwd.getText()+"')";
你可以打印下你的sql,就能发现你输出的sql语句的引号是不全的,例如我都输入a后,打印的sql:insert into signs values ('a,a')
代码问题,大意导致的引号不全,修正如下:String sql = "insert into signs values ('" + text_usr.getText() + "','" + text_pwd.getText() + "')";
再试试,就能打印出正确的sql了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。