Skip to content

Commit 2e07da8

Browse files
committed
DB 03. Refatoração, parâmetros na SQL e segurança contra SQL Injection
1 parent 1f61007 commit 2e07da8

File tree

1 file changed

+54
-14
lines changed

1 file changed

+54
-14
lines changed

src/main/java/com/example/AppBd.java

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,52 @@
11
package com.example;
22

33
import java.sql.Statement;
4+
import java.sql.Connection;
45
import java.sql.DriverManager;
56
import java.sql.SQLException;
67

78
public class AppBd {
9+
private static final String PASSWORD = "";
10+
private static final String USERNAME = "gitpod";
11+
private static final String JDBC_URL = "jdbc:postgresql://localhost/postgres";
12+
private Connection conn;
13+
814
public static void main(String[] args) {
15+
new AppBd();
16+
}
17+
18+
public AppBd() {
19+
try (var conn = getConnection()) {
20+
// carregarDriverJDBC(); não é necessário
21+
listarEstados(conn);
22+
localizarEstado(conn, "CE");
23+
} catch (SQLException e) {
24+
System.err.println("Não foi possível conectar ao banco de dados: " + e.getMessage());
25+
}
26+
}
27+
private void localizarEstado(Connection conn, String uf) {
928
try {
10-
// Carrega a classe do driver JDBC para PostgreSQL
11-
Class.forName("org.postgresql.Driver");
12-
} catch (ClassNotFoundException e) {
13-
// Trata o caso em que a classe do driver não pôde ser encontrada
14-
System.err.println("Não foi possível carregar a biblioteca para acesso ao banco de dados: " + e.getMessage());
15-
}
29+
// var sql = "select * from estado where uf = '" + uf + "'"; // suscetível a sql injection
30+
var sql = "select * from estado where uf = ?";
31+
var statement = conn.prepareStatement(sql);
32+
statement.setString(1, uf);
33+
System.out.println(sql);
34+
var result = statement.executeQuery();
35+
if (result.next()) {
36+
System.out.printf("Id: %d Nome: %s UF: %s \n", result.getInt("id"), result.getString("nome"), result.getString("uf"));
37+
}
38+
} catch (SQLException e) {
39+
System.err.println("Erro ao executar consulta SQL: " + e.getMessage());
40+
}
41+
42+
}
1643

17-
Statement statement = null;
18-
try (var conn = DriverManager.getConnection("jdbc:postgresql://localhost/postgres", "gitpod", "")) {
44+
private void listarEstados(Connection conn) {
45+
try {
1946
System.out.println("Conexão com o banco realizada com sucesso!");
2047

2148
// Cria um objeto Statement para executar consultas SQL
22-
statement = conn.createStatement();
49+
var statement = conn.createStatement();
2350

2451
// Executa uma consulta SQL e obtém o resultado
2552
var result = statement.executeQuery("select * from estado");
@@ -28,13 +55,26 @@ public static void main(String[] args) {
2855
while (result.next()) {
2956
System.out.printf("Id: %d Nome: %s UF: %s \n", result.getInt("id"), result.getString("nome"), result.getString("uf"));
3057
}
58+
59+
System.out.println();
3160
} catch (SQLException e) {
32-
// Trata os erros relacionados à conexão ou execução de consultas
33-
if (statement == null)
34-
System.err.println("Não foi possível conectar ao banco de dados: " + e.getMessage());
35-
else
36-
System.err.println("Não foi possível executar a consulta ao banco de dados: " + e.getMessage());
61+
System.err.println("Não foi possível executar a consulta ao banco: " + e.getMessage());
3762
}
3863
}
64+
65+
private Connection getConnection() throws SQLException {
66+
return DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD);
67+
}
68+
69+
// private void carregarDriverJDBC() {
70+
// try {
71+
// Carrega a classe do driver JDBC para PostgreSQL
72+
// Class.forName("org.postgresql.Driver");
73+
// } catch (ClassNotFoundException e) {
74+
// Trata o caso em que a classe do driver não pôde ser encontrada
75+
// System.err.println("Não foi possível carregar a biblioteca para acesso ao banco de dados: " + e.getMessage());
76+
// }
77+
// }
3978
}
4079

80+

0 commit comments

Comments
 (0)