我创建了一个拥有数据库的程序..这是我现在查看的数据库:
当用户使用其用户名登录时,我已经可以使用用户类型检索用户名。但我现在有一个问题,程序运行正常,唯一的是程序显示所有用户名和用户类型,即使我使用用户名登录: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);
}
}
非常感谢!
答案 0 :(得分:1)
更改此查询:
select Username, UserType from Member
要
select Username, UserType from Member where Username=? and UserType=?
并将相应的参数传递给?
。基本上你得到的所有记录都没有过滤。
答案 1 :(得分:0)
您需要一个where子句来联系已登录的成员。