获取数据库中的用户名和用户类型到Java程序

时间:2013-11-18 09:15:40

标签: java ms-access jdbc netbeans-7 jdbc-odbc

我创建了一个拥有数据库的程序..这是我现在查看的数据库:

enter image description here

当用户使用其用户名登录时,我已经可以使用用户类型检索用户名。但我现在有一个问题,程序运行正常,唯一的是程序显示所有用户名和用户类型,即使我使用用户名登录:Fuhans。

我想要的是程序只显示登录用户名(例如:我用用户名登录:Fuhans,程序显示消息框,显示用户名(Fuhans)和用户名的用户类型(管理员),不是数据库中的所有用户名。

我如何解决这个问题?

这是我的代码:(使用Java编写)

private void GetUsername(Connection conn, Statement state, ResultSet result)
    {
        try
        {
            String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
            Class.forName(driver);

            String url = "jdbc:odbc:Database";

            conn = DriverManager.getConnection(url);

            state = conn.createStatement();

            String query = "select Username, UserType from Member";

            result = state.executeQuery(query);

            while(result.next())
            {
                user = result.getString("Username");
                userType = result.getString("UserType");

                _userInformation.setUser(user);
                _userInformation.setUserType(userType);

                _sound.PlaySound(1);
                _infoBox.ShowMessageBox("Welcome: " + _userInformation.getUser() + " - " + _userInformation.getUserType() + " ! ", "Welcome" , 1);
            }
        } 

        catch (Exception e) 
        {
            System.err.println(e.getMessage());

            _sound.PlaySound(2);

            _infoBox.ShowMessageBox(e.getMessage(), "Error", 2);

            _reminder = new Reminder(1);

            JOptionPane.showOptionDialog(null, "Program will be closed due to error!", "Error", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, new Object[]{}, null);

            System.exit(0);
        }
    }

非常感谢!

2 个答案:

答案 0 :(得分:1)

更改此查询:

select Username, UserType from Member

select Username, UserType from Member where Username=? and UserType=?

并将相应的参数传递给?。基本上你得到的所有记录都没有过滤。

答案 1 :(得分:0)

您需要一个where子句来联系已登录的成员。