我对Java很陌生,只创建了一些教程/示例控制台程序。我一直在尝试通过一个简单的银行程序来提高我的知识。我想做的是使用ucanaccess / JDBC对用户进行身份验证。我已经成功连接到数据库并从SELECT查询返回结果,但是现在我试图将用户信息传递到查询中,以查看表中是否存在该用户。
我正在从我的主类的扫描器输入中传递变量uName和uPw。
下面的程序运行,但随后终止,我无法确定查询是否成功执行。在这方面我需要一些帮助。任何帮助都非常感谢。
package exceptionsPackage;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AccessDBConn {
// variables
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
public AccessDBConn() {
}
public void connStat(String uName, String uPw) {
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
} catch (ClassNotFoundException cnfex) {
System.out.println("Problem in loading or " + "registering MS Access JDBC driver");
cnfex.printStackTrace();
}
try {
String msAccDB = "Path\\bankAdmin.accdb";
String dbURL = "jdbc:ucanaccess://" + msAccDB;
connection = DriverManager.getConnection(dbURL);
statement = connection.createStatement();
PreparedStatement ps = connection
.prepareStatement("SELECT userName, password FROM tblAuthenticate WHERE userName=? AND password=?");
ps.setString(1, uName);
ps.setString(2, uPw);
resultSet = ps.executeQuery();
while (resultSet.next()) {
System.out.println(resultSet.getString(1) + " " + resultSet.getString(2));
}
} catch (SQLException sqlex) {
sqlex.printStackTrace();
} finally {
try {
if (null != connection) {
resultSet.close();
statement.close();
connection.close();
}
} catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}
}
}