Mysql驱动问题 [英] Mysql driver problems

查看:102
本文介绍了Mysql驱动问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的DAO:

package be.pxl.ticket.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

import be.pxl.ticket.bean.TicketBean;

public class TicketDAO {
    private String url;
    private String user;
    private String password;

public TicketDAO(String url, String user, String password) {
    this.url = url;
    this.user = user;
    this.password = password;
}

public void setDriver(String driver)
         throws ClassNotFoundException {
      // Laad de driver
       Class.forName(driver);
   }

public TicketBean getTicketById(int id) {
    if (id > 0) {
        try (Connection con = getConnection();
                PreparedStatement stmt = con.prepareStatement(
                        "SELECT id, state, location, description, title, timeCreated, submitBy, assignedTo from tickettable WHERE id=?")) {
            stmt.setInt(1, id);
            try (ResultSet rs = stmt.executeQuery()) {
                if (rs.next()) {
                    TicketBean ticket = new TicketBean();
                    ticket.setId(id);
                    ticket.setState(rs.getString("state"));
                    ticket.setLocation(rs.getString("location"));
                    ticket.setDescription(rs.getString("description"));
                    ticket.setTitle(rs.getString("title"));
                    ticket.setTimeCreated(rs.getDate("timeCreated"));
                    ticket.setSubmitBy(rs.getString("submitBy"));
                    ticket.setAssignedTo(rs.getString("assignedTo"));
                    return ticket;
                } else {
                    return null;// als ticket niet wordt gevonden
                }
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.println("Failed to get Ticket");
                return null;
            }
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            System.out.println("Failed to get Ticket 2");
            return null;
        }
    } else {
        System.out.println("Id must be greater than 0");
        return null;
    }
}

private Connection getConnection() throws SQLException {
       return DriverManager.getConnection(url, user, password);
}

public void setUrl(String url) {
    this.url = url;
}

public void setUser(String user) {
    this.user = user;
}

public void setPassword(String password) {
    this.password = password;
}

}

这是我的servlet:

This is my servlet:

package be.pxl.ticket.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import be.pxl.ticket.bean.TicketBean;
import be.pxl.ticket.dao.TicketDAO;
import be.pxl.ticket.service.ITicketService;
import be.pxl.ticket.service.TicketService;

@WebServlet("/Ticket")
public class TicketServlet extends HttpServlet {
    private ITicketService service;

    public void init() throws ServletException{
        super.init();
        service = new TicketService();
        service.setTicketDAO(new TicketDAO("mysql.jdbc://localhost/ticketdb1","root",""));
    }

    public void doGet(HttpServletRequest req, HttpServletResponse res) {
        int id = Integer.parseInt(req.getParameter("id"));
        TicketBean ticket = service.getTicketById(id);
        System.out.println(id);
        req.setAttribute("tb", ticket);
        try {
            req.getRequestDispatcher("TicketView.jsp").forward(req, res);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        } catch (ServletException e) {
            System.out.println("servlet-exception :0");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("something wrong with IO");
            e.printStackTrace();
        }

        System.out.println("triggered doGet");
    }

    public void doPost(HttpServletRequest req, HttpServletResponse res) {
        System.out.println("triggered doPost");
    }

}

这是我的服务:




package be.pxl.ticket.service;

import java.sql.SQLException;

import be.pxl.ticket.bean.TicketBean;
import be.pxl.ticket.dao.TicketDAO;

public class TicketService implements ITicketService {
    private TicketDAO ticketDAO;

    @Override
    public TicketBean getTicketById(int id){
        // TODO Auto-generated method stub
            return ticketDAO.getTicketById(id);

    }

    public TicketDAO getTicketDAO() {
        return ticketDAO;
    }

    public void setTicketDAO(TicketDAO ticketDAO) {
        this.ticketDAO = ticketDAO;
    }

}

错误信息是:

java.sql.SQLException: No suitable driver found for mysql.jdbc://localhost/ticketdb1
Failed to get Ticket 2
1
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at be.pxl.ticket.dao.TicketDAO.getConnection(TicketDAO.java:68)
    at be.pxl.ticket.dao.TicketDAO.getTicketById(TicketDAO.java:31)
    at be.pxl.ticket.service.TicketService.getTicketById(TicketService.java:14)
    at be.pxl.ticket.servlet.TicketServlet.doGet(TicketServlet.java:28)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
triggered doGet

我不知道这里有什么问题。我的中的 mysql.jar jstl.jar

I have no idea what's wrong here. I have the mysql.jar in my library and the jstl.jar

它说了一下驱动程序,但它的设置是这样的

It says something with the driver but its set so

推荐答案

检查行连接到服务器时

service.setTicketDAO(new TicketDAO("mysql.jdbc://localhost/ticketdb1","root",""));

应该是

service.setTicketDAO(new TicketDAO("jdbc:mysql://localhost:3306/ticketdb1","root",""));




检查数据库网址,我更改了网页。

Check the database url, I changed it.

这里3306是默认的mysql端口号改变,如果你的情况不同。

here 3306 is default mysql port number change if different in your case.

你还有使用

Class.forName("com.mysql.jdbc.Driver");

并且需要包含 mysql-connector.jar 文件。

希望它能提供帮助。

这篇关于Mysql驱动问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆