Java Academy · पाठ

JDBC की मूल बातें

Connections, statements और result sets

पाठ 1, कुल 4 में से13 चरण

JDBC की मूल बातें, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

JDBC क्या है?

JDBC (Java डेटाबेस कनेक्टिविटी) Java से संबंधपरक डेटाबेस के साथ संवाद करने के लिए मानक एपीआई है।

  • यह java.sql पैकेज में मौजूद है।
  • हर डेटाबेस एक ड्राइवर उपलब्ध कराता है, जो JDBC इंटरफ़ेस लागू करता है।
  • आप Connection, Statement और ResultSet जैसे इंटरफ़ेस के आधार पर कोड लिखते हैं — सीधे विक्रेता की क्लासों के आधार पर नहीं।

यह अमूर्तीकरण उसी कोड को PostgreSQL, MySQL, H2 या Oracle के साथ काम करने देता है।

मुख्य इंटरफ़ेस

अधिकांश काम तीन इंटरफ़ेस करते हैं:

  • Connection — डेटाबेस के साथ एक खुला सत्र।
  • Statement / PreparedStatement — एसक्यूएल भेजता है।
  • ResultSet — query से लौटाई गई पंक्तियों पर एक कर्सर।

आप DriverManager या DataSource से Connection प्राप्त करते हैं।

कनेक्शन खोलना

DriverManager.getConnection(url, user, password) एक सक्रिय Connection लौटाता है।

JDBC URL डेटाबेस की पहचान करता है, उदाहरण के लिए jdbc:postgresql://localhost:5432/shop। आधुनिक ड्राइवर अपने-आप पंजीकृत हो जाते हैं, इसलिए अब आपको Class.forName(...) कॉल करने की आवश्यकता नहीं होती।

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:postgresql://localhost:5432/shop";
        try (Connection conn = DriverManager.getConnection(url, "app", "secret")) {
            System.out.println("Connected: " + !conn.isClosed());
        } catch (SQLException e) {
            System.out.println("Connection failed: " + e.getMessage());
        }
    }
}

संसाधन-सहित try

Connection, Statement और ResultSet, सभी AutoCloseable लागू करते हैं।

इन्हें हमेशा संसाधन-सहित try ब्लॉक के अंदर खोलिए, ताकि वे अपने-आप बंद हो जाएँ — अपवाद आने पर भी। कनेक्शनों को खुला छोड़ने से डेटाबेस की क्षमता जल्दी समाप्त हो जाती है।

  • संसाधन उलटे क्रम में बंद होते हैं।
  • finally ब्लॉक की आवश्यकता नहीं होती।

क्वेरी चलाना

सरल SELECT के लिए Statement बनाइए और executeQuery कॉल कीजिए, जो एक ResultSet लौटाता है।

उदाहरण में मेमोरी के अंदर एक सिमुलेशन का उपयोग किया गया है, ताकि आप वास्तविक डेटाबेस के बिना प्रवाह देख सकें। वास्तविक उपयोग में एसक्यूएल कनेक्शन के विरुद्ध चलाया जाएगा।

import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Simulated result of: SELECT name FROM users
        List<String> names = List.of("Ada", "Linus", "Grace");
        System.out.println("Query returned " + names.size() + " rows:");
        for (String name : names) {
            System.out.println(" - " + name);
        }
    }
}

ResultSet पढ़ना

ResultSet पहली पंक्ति से पहले से शुरू होता है। लूप में rs.next() कॉल कीजिए; जब कोई और पंक्ति न हो, तो यह false लौटाता है।

प्रकार-विशिष्ट गेटर की सहायता से कॉलमों को नाम या 1 से शुरू होने वाले इंडेक्स द्वारा पढ़िए:

  • rs.getInt("id")
  • rs.getString("name")
  • rs.getDouble("price")
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:postgresql://localhost:5432/shop";
        try (Connection conn = DriverManager.getConnection(url, "app", "secret");
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("SELECT id, name FROM users")) {
            while (rs.next()) {
                System.out.println(rs.getInt("id") + ": " + rs.getString("name"));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
}

लेखन के लिए executeUpdate

INSERT, UPDATE और DELETE के लिए executeUpdate का उपयोग कीजिए। यह एक int लौटाता है: प्रभावित पंक्तियों की संख्या।

execute का उपयोग केवल तब कीजिए, जब आपको पहले से पता न हो कि कथन परिणाम सेट लौटाएगा या नहीं।

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:postgresql://localhost:5432/shop";
        try (Connection conn = DriverManager.getConnection(url, "app", "secret");
             Statement st = conn.createStatement()) {
            int rows = st.executeUpdate("DELETE FROM sessions WHERE expired = true");
            System.out.println("Deleted " + rows + " rows");
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
}

पंक्तियों को ऑब्जेक्ट में बदलना

अधिकांश एप्लिकेशन हर पंक्ति को एक डोमेन ऑब्जेक्ट में बदलते हैं। ResultSet पर लूप चलाकर इंस्टेंस बनाइए।

यह उसी तरीके का उदाहरण है, जिसे स्वतंत्र रूप से चलाने के लिए सिमुलेट किया गया है। एक record मैपिंग को संक्षिप्त बनाता है।

import java.util.ArrayList;
import java.util.List;

public class Main {
    record User(int id, String name) {}

    public static void main(String[] args) {
        // Stand-in for iterating a ResultSet
        String[][] rows = {{"1", "Ada"}, {"2", "Linus"}};
        List<User> users = new ArrayList<>();
        for (String[] row : rows) {
            users.add(new User(Integer.parseInt(row[0]), row[1]));
        }
        users.forEach(System.out::println);
    }
}

SQLException संभालना

लगभग हर JDBC विधि जाँचे जाने वाले अपवाद SQLException को उत्पन्न करती है।

इसमें उपयोगी निदान-सूचना होती है:

  • getMessage() — मनुष्यों द्वारा पढ़ा जा सकने वाला पाठ।
  • getSQLState() — मानक 5-अक्षर वाला स्थिति कोड।
  • getErrorCode() — विक्रेता-विशिष्ट कोड।

इन त्रुटियों को अनदेखा करने के बजाय इनका लॉग दर्ज कीजिए।

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {
        SQLException e = new SQLException("duplicate key", "23505", 7);
        System.out.println("Message: " + e.getMessage());
        System.out.println("SQLState: " + e.getSQLState());
        System.out.println("ErrorCode: " + e.getErrorCode());
    }
}

DatabaseMetaData

conn.getMetaData() एक DatabaseMetaData ऑब्जेक्ट लौटाता है, जो स्वयं डेटाबेस का वर्णन करता है।

यह आपको उत्पाद का नाम और संस्करण, समर्थित सुविधाएँ तथा तालिकाओं और कॉलमों की सूची भी बता सकता है। इसी तरह स्कीमा ब्राउज़र जैसे उपकरण विक्रेता के विवरण को हार्डकोड किए बिना काम करते हैं।

सबको साथ जोड़ना

पढ़ने का सामान्य प्रवाह:

  • संसाधन-सहित try में एक Connection खोलिए।
  • एक Statement या, बेहतर विकल्प के रूप में, PreparedStatement बनाइए।
  • executeQuery कॉल कीजिए और rs.next() के साथ लूप चलाइए।
  • कॉलमों को ऑब्जेक्ट में बदलें।
  • संसाधन-सहित try को सब कुछ बंद करने दीजिए।

अगले पाठ में हम query को इंजेक्शन से सुरक्षित बनाएँगे।

त्वरित जाँच

Statement.executeUpdate क्या लौटाता है?

पुनरावलोकन

अब आप JDBC के मुख्य प्रवाह को जानते हैं:

  • DriverManager.getConnection एक Connection खोलता है।
  • Statement एसक्यूएल भेजता है; executeQuery एक ResultSet लौटाता है और executeUpdate प्रभावित पंक्तियों की संख्या लौटाता है।
  • rs.next() और प्रकार-विशिष्ट गेटर की सहायता से दोहराव कीजिए।
  • हमेशा संसाधन-सहित try का उपयोग कीजिए और SQLException को उसकी स्थिति तथा त्रुटि कोड के साथ संभालिए।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Java सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
104
पाठ
374

अक्सर पूछे जाने वाले प्रश्न

क्या “JDBC की मूल बातें” पाठ निःशुल्क है?

हाँ—“JDBC की मूल बातें” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“JDBC की मूल बातें” में मैं क्या सीखूँगा?

Connections, statements और result sets आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“JDBC की मूल बातें” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. JDBC की मूल बातें
  2. PreparedStatement
  3. Transactions
  4. HikariCP के साथ Connection Pooling
← Java Academy पर वापस जाएँ