Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql.SQLException:未找到适合jdbc的驱动程序:mysql://localhost:3306/db_Java_Mysql_Sql Server_Jdbc - Fatal编程技术网

java.sql.SQLException:未找到适合jdbc的驱动程序:mysql://localhost:3306/db

java.sql.SQLException:未找到适合jdbc的驱动程序:mysql://localhost:3306/db,java,mysql,sql-server,jdbc,Java,Mysql,Sql Server,Jdbc,页面始终转发到“custLogin”,但数据是正确的 代码如下: 类登录: private CustomerDB db; public void init() { String dbUrl = "jdbc:mysql://localhost:3306/fyp"; String dbUser = "root"; String dbPassword = ""; db = new CustomerDB(dbUrl, dbUser, dbPassword); } pr

页面始终转发到“custLogin”,但数据是正确的

代码如下:

类登录:

private CustomerDB db;

public void init() {
    String dbUrl = "jdbc:mysql://localhost:3306/fyp";
    String dbUser = "root";
    String dbPassword = "";
    db = new CustomerDB(dbUrl, dbUser, dbPassword);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String action = request.getParameter("action");

    if (!isAuthenticated(request) && !("authenticate".equals(action))) {
        doLogin(request, response);
        return;
    }
    if ("authenticate".equals(action)) {
        doAuthenticate(request, response);
    } else if ("logout".equals(action)) {
        doLogout(request, response);
    } else {
        response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
    }
}

private void doAuthenticate(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    String username = request.getParameter("custID");
    String password = request.getParameter("custPW");
    String targetURL;
    init();
    boolean isValid = db.isValidUser("chan123", "123456");

    if (isValid) {
        targetURL = "/index.jsp";
    } else {
        targetURL = "/custLogin.jsp";
    }
    RequestDispatcher rd;
    rd = getServletContext().getRequestDispatcher("/" + targetURL);
    rd.forward(request, response);
}

public boolean isAuthenticated(HttpServletRequest request) {
    boolean result = false;
    HttpSession session = request.getSession();
    if (session.getAttribute("userInfo") != null) {
        result = true;
    }
    return result;
}

private void doLogin(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    String targetURL = "login.jsp";
    RequestDispatcher rd;
    rd = getServletContext().getRequestDispatcher("/" + targetURL);
    rd.forward(request, response);
}

private void doLogout(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    HttpSession session = request.getSession(false);
    if (session != null) {
        session.removeAttribute("userInfo");
        session.invalidate();
    }
    doLogin(request, response);
}
chan123是客户ID。 123456是custPW

类别CustomerDB:

private String dbUrl;
private String dbUser;
private String dbPassword;

public CustomerDB() {
}

public CustomerDB(String dburl, String dbUser, String dbPassword) {
    this.dbUrl = dbUrl;
    this.dbUser = dbUser;
    this.dbPassword = dbPassword;
}

public Connection getConnection() throws SQLException, IOException {
    System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
    Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/fyp", "root", "");
    return conn;
}

public boolean isValidUser(String custID, String custPW) {
    boolean isValid = false;
    Connection cnnct = null;
    PreparedStatement pStmnt = null;

    try {
        cnnct = getConnection();
        String preQueryStatement = "SELECT * FROM customer WHERE custID=? and custPW=?";
        pStmnt = cnnct.prepareStatement(preQueryStatement);
        pStmnt.setString(1, custID);
        pStmnt.setString(2, custPW);
        ResultSet rs = null;
        rs = pStmnt.executeQuery();
        if (rs.next()) {
            isValid = true;
        }
        pStmnt.close();
        cnnct.close();
    } catch (SQLException ex) {
        while (ex != null) {
            ex.printStackTrace();
            ex = ex.getNextException();
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    return isValid;
}
我创建了测试java。它可以加载正确的结果

public static void main(String[] arg) {
    String dbUrl = "jdbc:mysql://localhost:3306/fyp";
    String dbUser = "root";
    String dbPassword = "";
    CustomerDB db = new CustomerDB(dbUrl, dbUser,dbPassword);
    boolean n = db.isValidUser("chan123", "123456");
    if (n) {
        System.out.println("TTTTTT");
    }else 
        System.out.println("f");
}
}

它显示“TTTTTT”

但页面将转发到“custLogin”。 输出:

SEVERE:   java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/fyp
    at java.sql.DriverManager.getConnection(DriverManager.java:596)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at fyp.db.CustomerDB.getConnection(CustomerDB.java:29)
    at fyp.db.CustomerDB.isValidUser(CustomerDB.java:39)
    at fyp.servlet.Login.doAuthenticate(Login.java:52)
    at fyp.servlet.Login.doPost(Login.java:39)
...
请帮我解决这个问题。
谢谢大家!

您不需要使用
Class.forName(“com.mysql.jdbc.Driver”)不再需要使用
Class.forName()
明确加载JDBC驱动程序。当前使用
Class.forName()
加载JDBC驱动程序的现有程序将继续工作,无需修改


您需要将mysql connector/jjar文件(例如,可用的)添加到服务器类路径中。

您不需要使用
Class.forName(“com.mysql.jdbc.Driver”)不再需要使用
Class.forName()
明确加载JDBC驱动程序。当前使用
Class.forName()
加载JDBC驱动程序的现有程序将继续工作,无需修改


您需要将mysql connector/jjar文件(例如,可用的)添加到服务器类路径中。

您不需要使用
Class.forName(“com.mysql.jdbc.Driver”)不再需要使用
Class.forName()
明确加载JDBC驱动程序。当前使用
Class.forName()
加载JDBC驱动程序的现有程序将继续工作,无需修改


您需要将mysql connector/jjar文件(例如,可用的)添加到服务器类路径中。

您不需要使用
Class.forName(“com.mysql.jdbc.Driver”)不再需要使用
Class.forName()
明确加载JDBC驱动程序。当前使用
Class.forName()
加载JDBC驱动程序的现有程序将继续工作,无需修改


您需要将mysql connector/jjar文件(例如,可用的)添加到您的服务器类路径中。

这表示您不需要设置驱动程序名do
Class.forName(“com.mysql.jdbc.driver”)
DriveManager.getConnection(“”)之前
表示您无法设置驱动程序名do
Class.forName(“com.mysql.jdbc.driver”)
DriveManager.getConnection(“”)之前
表示您无法设置驱动程序名do
Class.forName(“com.mysql.jdbc.driver”)
DriveManager.getConnection(“”)之前
表示您无法设置驱动程序名do
Class.forName(“com.mysql.jdbc.driver”)
DriveManager.getConnection(“”)之前加上一个表示来自java docsplus的信息一个表示来自java docsplus的信息一个表示来自java docsplus的信息一个表示来自java docs的信息