当我们测试一个新的数据库服务时,需要使用对方提供jdbc驱动来连接数据库,有时候简单的写个demo去连接,发现提示异常:
java.sql.SQLException: No suitable driver found for jdbc:jdbc:nuuv://10.1.8.99:8832/xxoo
比如有以下程序连接数据库测试:
public static void main(String[] args) throws Exception {
try(Scanner sc = new Scanner(System.in)){
String url = "jdbc:jdbc:nuuv://10.1.8.99:8832/xxoo";
String username = "xx";
String passwd = "oo";
try (Connection conn = DriverManager.getConnection(url, username, passwd)) {
DatabaseMetaData metaData = conn.getMetaData();
System.out.println("Product Name:" + metaData.getDatabaseProductName());
}
}
}
执行时提示异常No suitable driver found for,一般会有如下几个原因
- 驱动路径指定的不正确,当你IDE工具中运行的时候,因为已经主动将驱动加载到了指定路径。但是当你在外部执行,比如编写成脚本,用java命令执行,就需要指定依赖包目录,比如:java -cp .;\lib* A 类似与这样写即可。其中\lib*是指的与A.class同级的lib目录,也就说驱动放到了lib目录中
- url路径不正确,按照JDBC的规范,采用SPI机制,数据库驱动包会实现自己的Driver,里面有写好的匹配的前缀,比如jdbc:oracle这种,如果你传入错误了那就会找不到合适的驱动程序来处理,就会报错。此时按照驱动包的前缀名称修改即可