您的位置:首页 > 数据库

JDBC连接数据库以及创建单例模式时遇到的错误

2020-05-07 04:23 1256 查看

创建单例模式时的错误

输入输出流

使用创建流有四种方法
在本次编写中用到了两种

  1. 第一种
    使用类名和类加载器来创建
private ConfigManager(){
//文件相对路径
String configFile = "src/database.properties";
InputStream in =ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
properties = new Properties();
try {
properties.load(in);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}

一定一定要用类加载器getClassLoader()来创建流,当时没有写,导致报了空指针异常。

InputStream in =ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
  1. 通过获取当前线程来获取流
    没啥好注意的,记住方法名,写呗
private ConfigManager(){
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream in = loader.getResourceAsStream("src/database.properties");
properties = new Properties();
try {
properties.load(in);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}

连接数据库遇到的错误

public boolean getConnection(){
//获得驱动
try {
Class.forName(ConfigManager.getInstance().getString("jdbc.driver"));
String url = ConfigManager.getInstance().getString("jdbc.connection.url");
String user = ConfigManager.getInstance().getString("jdbc.connection.username");
String password = ConfigManager.getInstance().getString("jdbc.connection.password");
connection = DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return  true;
}

在报错 Access denied for user ‘’@‘localhost’ to database 'flight’时记得检查两点。
一、properties文件里有没有拼写错误
二、调用getString()方法里的参数有没有拼写错误

差不多先生Dr 原创文章 1获赞 0访问量 20 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐