我想创建一个MS Access数据库登录系统。要登录的数据在数据库中
有可能在线工作,然后填写登录详细信息。然后按OK键移动到下一个屏幕。
以及离线工作的能力,然后在用户名处输入"学生"(密码为空),然后按OK键移动到下一个屏幕。
如果凭据错误,必须给出错误,但当只填写"学生"时应该没有错误
现在的问题是,它给出了错误,因为这里输入了"学生",但他不应该给出错误。只有当登录数据错误时。我该如何解决这个问题?
代码:/**Local*/
try {
String idnr = GebruikersnaamTekst.getText().trim();
if (idnr.matches("Cursist")) {
BasisScherm b = new BasisScherm();
b.setVisible(true);
setVisible(false);
}
} catch (Exception e) {
}
/**Internet*/
try
{
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(driver);
String db = "jdbc:odbc:db1";
con = DriverManager.getConnection(db);
st = con.createStatement();
}
catch(Exception e)
{
}
try
{
String idnr = GebruikersnaamTekst.getText().trim();
String pass = Password.getText().trim();
String sql = "select idnr,pass from Table1 where idnr='"+idnr+"'and pass='"+pass+"'";
rs = st.executeQuery(sql);
int count = 0;
while(rs.next())
{
count = count + 1;
}
if (count == 1) {
BasisScherm b = new BasisScherm();
b.setVisible(true);
setVisible(false);
}
else
{
JOptionPane.showMessageDialog(null, "Gebruiker niet gevonden!");
}
}
catch(Exception ex )
{
}
}
你正在寻找它成功,如果你匹配正确的"学生"对吗?
这可能是大小写敏感的问题,试试这个
if (idnr.toLowerCase().matches("cursist"))
计算结果为true,不区分大小写。
就程序流程而言,如果它们在同一个类或main()函数中,则无论本地结果如何,它都将执行Internet,这也可能引入错误。
创建一个全局布尔变量。确认你已经完成了学生检查完整代码:
/**Local*/
boolean isStudent = false;
try {
String idnr = GebruikersnaamTekst.getText().trim();
if (idnr.matches("Cursist")) {
BasisScherm b = new BasisScherm();
b.setVisible(true);
setVisible(false);
isStudent=true;
}
} catch (Exception e) {
}
if(!isStudent)
{
/**Internet*/
try
{
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(driver);
String db = "jdbc:odbc:db1";
con = DriverManager.getConnection(db);
st = con.createStatement();
}
catch(Exception e)
{
}
try
{
String idnr = GebruikersnaamTekst.getText().trim();
String pass = Password.getText().trim();
String sql = "select idnr,pass from Table1 where idnr='"+idnr+"'and pass='"+pass+"'";
rs = st.executeQuery(sql);
int count = 0;
while(rs.next())
{
count = count + 1;
}
if (count == 1) {
BasisScherm b = new BasisScherm();
b.setVisible(true);
setVisible(false);
}
else
{
JOptionPane.showMessageDialog(null, "Gebruiker niet gevonden!");
}
}
catch(Exception ex )
{
}
} }//end if