java.sql.SQLException: No suitable driver found for “jdbc:mysql://localhost:3306/****?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false”;问题
总结:java的properties文件赋值不要写分号,会一起读取进去
背景:在将登录MySQL需要用到的数据封装到jdbc.properties时,
- 通过静态代码块,加载类时自动执行(读取jdbc.properties中的数据)
public static String DRIVER ;
public static String URL;
public static String USER ;
public static String PWD ;
static {
InputStream is = ConnUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties=new Properties();
try {
properties.load(is);
DRIVER= properties.getProperty("jdbc.DRIVER");
URL= properties.getProperty("jdbc.URL");
USER= properties.getProperty("jdbc.USER");
PWD= properties.getProperty("jdbc.PWD");
} catch (IOException e) {
e.printStackTrace();
}
}
异常:出现加载驱动错误
java.sql.SQLException: No suitable driver found for "jdbc:mysql://localhost:3306/qqzonedb2?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false";
原因:java的properties文件不能写分号
- properties在load()时会将分号一起读取进去
-
因为
jdbc.properties
配置文件中的jdbc.DRIVER
后面带了一个分号,所以通过load获取的Driver也有一个分号(上面的debug图片) -
注意上面的异常最后也是带了一个分号
删去分号,问题解决