डर्बी डेटाबेस से मूल्य प्राप्त करने के लिए कक्षा बनाएं

मैंने एक डर्बी डेटाबेस से कनेक्ट करने के लिए एक कक्षा बनाई है। कार्यक्रम में, मैंने टेबल बनाया और कुछ फल नामों को मान के रूप में डाला। मुझे आश्चर्य है कि मैं एक नई सरणी में फल नाम मूल्य प्राप्त करने के लिए एक और कक्षा कैसे बना सकता हूं।

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class FruitDatabase {

    public static void main(String[] args) throws Exception {
        Connection conn = getConnection();
        Statement stmt = conn.createStatement();

        stmt.executeUpdate("drop table fruit");
        stmt.executeUpdate("create table fruit (name CHAR(15))"); 
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Apple')"); 
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Orange')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Banana')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Pineapple')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Mango')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Kiwi')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Grape')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Strawberry')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Pear')");
        stmt.executeUpdate("INSERT INTO fruit(name)VALUES('Peach')");
        ResultSet rs = stmt.executeQuery("SELECT * FROM fruit"); 
        outputResultSet(rs);

        rs.close();
        stmt.close();
        conn.close();
    }

    private static void outputResultSet(ResultSet rs) throws Exception {
        ResultSetMetaData rsMetaData = rs.getMetaData();
        int numberOfColumns = rsMetaData.getColumnCount();
        for (int i = 1; i < numberOfColumns + 1; i++) {
            String columnName = rsMetaData.getColumnName(i);
            System.out.print(columnName + "   ");

        }
        System.out.println();
        System.out.println("----------------------");

        String array [] = new String [numberOfColumns + 1];

        while (rs.next()) {
            for (int i = 1; i < numberOfColumns + 1; i++) {
                array[i] = rs.getString(i);
                System.out.println(array[i]);
            }

        }

    }

    private static Connection getConnection() throws Exception {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        String url = "jdbc:derby:MyDbTest;create=true";
        return DriverManager.getConnection(url);
    }

}
1
जोड़ा संपादित
विचारों: 1
सवाल वास्तव में समझ में नहीं आया? क्या आप एक चुनिंदा क्वेरी का उपयोग कर डेटाबेस से वापस फलों के नाम प्राप्त करना चाहते हैं? क्या आप यही पूछ रहे हैं?
जोड़ा लेखक mtk, स्रोत
असल में, यह मेरे शिक्षक द्वारा तैयार सोम कोडिंग है। मुझे स्क्रीन पर दिखाए जाने के लिए यादृच्छिक रूप से फल नाम प्राप्त करने के लिए कहा जाता है। मैंने प्रोग्राम चलाया है, और सभी मान एक कॉलम में संग्रहीत हैं। मैं उपरोक्त कार्यक्रम से सरणी से मूल्य प्राप्त करने के लिए एक और कक्षा बनाना चाहता हूं।
जोड़ा लेखक user1416640, स्रोत

1 उत्तर

array को एक निजी चर के रूप में घोषित करें, इसे स्थिर ब्लॉक में प्रारंभ करें और इसके लिए गेटर और सेटर विधियां जोड़ें। यहां गेटर-सेटर का कोई उपयोग नहीं है, लेकिन यह सिर्फ आपकी समझ के लिए है।

FruitDatabase.java

public class FruitDatabase {
    private static String[] array;

    public static String[] getArray() {
        return array;
    }

    public static void setArray(String[] arr) {
        array = arr;
    }

    public static void main(String[] args) throws Exception {
    ...
    }

    private static void outputResultSet(ResultSet rs) throws Exception {
    ... 
    while (rs.next()) {
            for (int i = 1; i < numberOfColumns + 1; i++) {
                array[i] = rs.getString(i);
                System.out.println(array[i]);
            }
    setArray(array);
    ....
    }
    ....
}

फिर दूसरे वर्ग से (Display.java मान लीजिए), आपको इस कक्षा का ऑब्जेक्ट बनाना होगा और फिर आप इस सरणी तक पहुंच सकते हैं:

Display.java

public class Display {
    public static void main(String[] args) {
        String[] newArr = new String[FruitDatabase.getArray().length];
    int i=0;
    for(String s : FruitDatabase.getArray()){
        System.out.println(s);
            newArr[i++]=s;
    }
    }
}
0
जोड़ा
ठीक। मुझे त्रुटि दिखाई देती है क्योंकि outputResultSet एक स्थिर विधि है, हम उपरोक्त कोड का उपयोग नहीं कर सकते हैं। अपडेट करूंगी।
जोड़ा लेखक mtk, स्रोत
पिछली बार संकलित और चेक नहीं किया गया था। अभी अपडेट किया गया है और संकलित और सत्यापित भी है। अगर आपको कोई त्रुटि मिलती है तो कृपया मुझे बताएं।
जोड़ा लेखक mtk, स्रोत
अरे .. क्या त्रुटि है? यह मेरे अंत में काम कर रहा है। आपने तदनुसार अपना कोड कैसे अपडेट किया .. कृपया सत्यापित करें।
जोड़ा लेखक mtk, स्रोत
बहुत धन्यवाद एमटीके, मुझे कोशिश करने दो। मुझे उम्मीद है कि मैं कर सकता हूँ!
जोड़ा लेखक user1416640, स्रोत
हाय एमटीके, आपकी महान मदद के लिए धन्यवाद। असल में मैं जावा के साथ वास्तव में नया हूँ। मुझे नहीं पता कि मुझे कोड को पहले भाग में कहां रखना चाहिए। यह असाइनमेंट मेरे लिए बहुत कठिन है।
जोड़ा लेखक user1416640, स्रोत
क्षमा करें मुझे FruitDatabase.java के लिए निम्न त्रुटि मिली है
जोड़ा लेखक user1416640, स्रोत
सी: \ उपयोगकर्ता \ bauyeung \ दस्तावेज़ \ जे क्रिएटर LE \ MyProjects \ Hangman \ src \ FruitDatabase.java: 32: त्रुटि: गैर स्थैतिक चर यह इस स्थिर संदर्भ से संदर्भित नहीं किया जा सकता है this.array = array; ^ 1 त्रुटि
जोड़ा लेखक user1416640, स्रोत
और Display.java के लिए निम्नलिखित
जोड़ा लेखक user1416640, स्रोत
सी: \ उपयोगकर्ता \ bauyeung \ दस्तावेज़ \ जे क्रिएटर LE \ MyProjects \ Hangman \ src \ TheHangman.java: 50: त्रुटि: प्रतीक स्ट्रिंग नहीं मिल सकता [] फल = FruitDatabase.getArray (); ^ प्रतीक: विधि getArray() स्थान: वर्ग FruitDatabase 1 त्रुटि
जोड़ा लेखक user1416640, स्रोत
क्या आप अभी भी एमटीके हैं?
जोड़ा लेखक user1416640, स्रोत
खेद है कि यह काम करता है ...
जोड़ा लेखक user1416640, स्रोत
यह काम करता है..लेकिन मैं मूल्य को किसी अन्य वर्ग में किसी अन्य सरणी में कैसे डाल सकता हूं, एआर [0] = अंगूर और एआर [1] = सेब जैसा दिखता है?
जोड़ा लेखक user1416640, स्रोत
असल में मैं डिस्प्ले क्लास में कोड ढूंढ रहा हूं जो शायद निम्न जैसा दिखता है: FruitDatabase fd = new FruitDatabase (); स्ट्रिंग [] फल = fd.getArray (); स्ट्रिंग रेट = PickRand.get (फल); Println (सेवानिवृत्त);
जोड़ा लेखक user1416640, स्रोत