# JDBC — एडवांस्ड जावा

Source: https://www.geekswithgeeks.com/hi/advanced-java/adv-jdbc

> JDBC से Java में रिलेशनल डेटाबेस से बात करें — SQL इंजेक्शन से बचाव हेतु हमेशा PreparedStatement, ट्रांज़ैक्शन प्रबंधन, और संसाधन ठीक से बंद करें।

## हमेशा PreparedStatement

SQL में मान कभी न जोड़ें — `?` प्लेसहोल्डर और `PreparedStatement` उपयोग करें (SQL इंजेक्शन से बचाव)।

```java
String sql = "SELECT name FROM users WHERE age > ?";
try (var conn = DriverManager.getConnection(url, user, pass);
     var ps = conn.prepareStatement(sql)) {
    ps.setInt(1, 18);
    try (var rs = ps.executeQuery()) {
        while (rs.next()) System.out.println(rs.getString("name"));
    }
}
```

## ट्रांज़ैक्शन

autocommit बंद करें, सफलता पर commit, एक्सेप्शन पर rollback। असली ऐप में कनेक्शन पूल और फ़्रेमवर्क यह संभालते हैं।

```java
conn.setAutoCommit(false);
try {
    debit.executeUpdate();
    credit.executeUpdate();
    conn.commit();
} catch (SQLException e) {
    conn.rollback();
    throw e;
}
```
