尝试了解如何使用ucanaccess / JDBC验证用户/密码

时间:2018-11-12 19:29:43

标签: java jdbc ucanaccess

我对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();
            }
        }
    }
}

0 个答案:

没有答案