0

我正在尝试捕获和存储用户详细信息(名称、密码等)并将它们存储在 sql 数据库中,以便用户将来登录时使用。

如何将详细信息保存为数据库中的一行,但将它们作为单独的字符串输入?另外,我如何捕获和存储从组合框中选择的性别(男、女)等详细信息?谢谢。

private class achandler implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent ae) {
            //capture user details
            String fnamevalue = fnametext.getText();
            String lnamevalue = lnametext.getText();
            String usernamevalue = usernametext.getText();
            char[] pwdvalue = pwdtext.getPassword();
            char[] pwdrptvalue = pwdrpttext.getPassword();

            if(pwdvalue == pwdrptvalue) {
            //add user details to an array
            String[] userdetail = {fnamevalue, lnamevalue, usernamevalue, pwdvalue.toString()};

            try {
            Class.forName("com.mysql.jdbc.Driver");
            String Url = "jdbc:mysql://localhost/nsibirwa?" +
                                   "user=root&password=1234";

            Connection con = DriverManager.getConnection(Url);
            Statement stmt = con.createStatement();

            //I am stuck here!!!! i.e. adding 'userdetail' as a tuple in the database


        }
        catch (SQLException e) {
            System.out.println("SQL Exception: "+ e.toString());
        } 
        catch (ClassNotFoundException cE) {
            System.out.println("Class Not Found Exception: "+ cE.toString());
        }
       }
            else {
            JOptionPane.showMessageDialog(null, "password not matching!", 
                        "Password error", JOptionPane.ERROR_MESSAGE);
            }

     }
   }
4

1 回答 1

2

在数据库中添加“userdetail”作为元组

就像是:

Connection con = DriverManager.getConnection(Url);
PreparedStatement stmt = con.prepareStatement("insert into user_details (fname, lname, username, pwd) values (?,?,?,?));
stmt.setString(1, fnamevalue);
stmt.setString(2, lnamevalue);
stmt.setString(3, username);
stmt.setString(4, new String (pwdvalue));
stmt.executeUpdate();

您的代码还有另一个问题:

if (pwdvalue == pwdrptvalue)

不能像那样比较对象。您需要将这些 char[] 转换为字符串并用于equals()比较它们。搜索“java string equals”以找出原因。这是非常基本的 Java 知识(并且在我看过的每个教程中都有介绍)

这假设您有一个以、和user_details列命名的表。如果您的表定义不同,则需要调整插入语句。fnamelnameusernamepwd

另外,我如何捕获和存储从组合框中选择的性别(男、女)等详细信息?

我建议您为此提出第二个问题。您不应该在一个问题中混合完全不同的主题(JDBC/SQL 与普通 Swing)。

于 2012-06-08T11:04:10.833 回答