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了。