程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> mysql-下面的Java代碼有問題嗎

mysql-下面的Java代碼有問題嗎

編輯:編程綜合問答
下面的Java代碼有問題嗎

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved