有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java(仅限Netbeans)未找到适合jdbc的驱动程序:mysql://localhost

我尝试在我的swing应用程序中使用下面的函数,结果在标题中得到了错误消息。这对我来说很奇怪,因为当在EclipseIDE上运行完全相同的代码而不是NetBeans时,函数执行得非常完美。 我相信我已经正确安装了驱动程序,因为在services选项卡中,我可以通过创建的驱动程序查看和访问MySQL表中的数据

public void insert(String Item, String Size, int Price, String Details){
    try{
        con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/ddApp", "root", "****"); //stars replacing password
        ps = con.prepareStatement("INSERT INTO ddApp.currentTable (item, size, price, description) VALUES (?, ?, ?, ?) ");
        ps.setString(1, Item);
        ps.setString(2, Size);
        ps.setInt(3, Price);
        ps.setString(4, Details);
        ps.executeUpdate(); 
    }catch(Exception ex){
        JOptionPane.showMessageDialog(null, ex.getMessage());
    }
}

共 (1) 个答案

  1. # 1 楼答案

    JDBC驱动程序是否“存在”(如中所示,JDBC url是否“工作”,取决于驱动程序是否存在),只需位于类路径上即可。无论您在netbeans中的任何其他选项卡中看到它都是不相关的:当netbeans“运行”您的应用程序时,它只是用一些类路径调用java.exe

    该类路径需要包括mysql jdbc。jar驱动程序。如果是这样,错误就会消失。如果没有,你就会得到那个错误

    如果您使用的是maven或gradle等构建系统,只要您正确地设置了依赖项(您在mysql jdbc上添加了dep,并且它是在通常的“编译时和运行时需要”配置(这是默认配置),那么只要您设置了IDE以使用该构建配置作为项目基础,一切正常

    如果您没有这样做,请确保mysql位于类路径上

    通常情况下不需要这样做——在编译过程中,您根本不需要它。依赖项(通常是jar文件)需要存在于[A]只有在编译时才存在,不需要在运行时存在(例如:Project Lombok),[B]只有在运行时才存在,不需要在编译时存在(这些插件只是实现一些服务API)。Mysql jdbc就是其中之一,或者两者都需要[C](默认值)。Hibernate、Guava、日志框架——您的大多数依赖项都是这种类型的

    这是一个类别[B]。您需要告诉netbeans确保mysql在命令行上。一个简单的解决方法是将其视为[C]——您的代码可以在没有它的情况下进行编译,但是当netbeans编译代码时,如果mysql jdbc jar位于类路径上,这一点都没有坏处。这意味着:无论netbeans必须添加jar依赖项的机制是什么,都要使用它(我真的不能告诉您,这取决于您如何设置项目)