Mr-86
Julho 21, 2023, 7:34pm
#1
Estava refazendo a parte de conexão com meu banco de dados, pois agr estou fazendo um curso sobre isso, o curso orienta a criação de um file com todas as informações do DB e dps instrui a usar a biblioteca FIleInputStream para ler essas informações e levá-la para o driveManager.
Pega as informações do arquivo
private static Properties loadProperties(){
try (FileInputStream fs = new FileInputStream("db_properties")){
Properties props = new Properties();
props.load(fs);
return props;
}catch(IOException e){
throw new DbException(e.getMessage());
}
}
porem fica dando um erro de arquivo inexistente, sendo que o arquivo existe
eo erro
Tente assim para ver se funciona:
URL resource = getClass().getResource("/db_properties");
try (FileInputStream fs = new FileInputStream(resource.getFile())) {
Properties props = new Properties();
props.load(fs);
}
Mr-86
Julho 22, 2023, 2:42am
#3
precisa de alguma biblioteca???
ta dando erro no getclass() e Url
Seu método é estático mas o getClass()
não é.
Na verdade você não precisa do URL
nem do FileInputStream
.
InputStream
é o suficiente:
private static Properties loadProperties(){
try (InputStream is = Object.class.getResourceAsStream("/db_properties")){
Properties props = new Properties();
props.load(is);
return props;
} catch(IOException e) {
throw new DbException(e.getMessage());
}
}
1 curtida
Mr-86
Julho 23, 2023, 2:11pm
#5
Agr aparentemente ta dando um erro no load
Posta o seu código atualizado.
Se o InputStream
está null
então das duas, uma:
Ou o caminho relativo foi passado errado;
Ou o arquivo não está no classpath da sua aplicação.
Mr-86
Julho 23, 2023, 2:55pm
#7
public class DB {
private static Connection conn = null;
public static Connection getConn(){
if (conn == null) {
try {
Properties props = loadProperties();
String url = props.getProperty("db_url");
conn = DriverManager.getConnection(url, props);
return conn;
}catch (SQLException e){
throw new DbException(e.getMessage());
}
}
return conn;
}
public static void closeConnection(){
if(conn != null){
try {
conn.close();
}catch (SQLException e){
throw new DbException(e.getMessage());
}
}
}
private static Properties loadProperties(){
try (InputStream is = Object.class.getResourceAsStream("/db_properties")){
Properties props = new Properties();
props.load(is);
return props;
}catch(IOException e){
throw new DbException(e.getMessage());
}
}
}
Não utilizo o Intellij, mas acredito que o seu arquivo não esteja no classpath da execução de seu programa
Mr-86
Julho 24, 2023, 6:07pm
#9
Ta hipoteticamente como faço para conseguir arrumar o programa??
O seu arquivo precisa estar no classpath de EXECUÇÃO da aplicação.
Veja documentação de sua IDE de como fazer isso.
Mr-86
Julho 24, 2023, 7:10pm
#11
Eu achei o path, só que não estou conseguindo colocar. agr to tetando descobrir como adicionar o file, só que não aparece nem as classes.
Provavelmente é na aba “Paths” e não no “Sources”