Creați o clasă pentru a obține valoare din baza de date derby

Am creat o clasă pentru a vă conecta la o bază de date derby. În program, am creat tabelul și am introdus niște nume de fructe ca valori. Mă întreb doar cum pot crea o altă clasă pentru a obține valoarea de nume de fructe într-o nouă matrice.

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
Nu ați înțeles exact problema? Doriți să obțineți numele de fructe din baza de date utilizând o interogare selectată? Asta vrei tu?
adăugat autor mtk, sursa
De fapt, aceasta este codificarea soem pregătită de tutorele meu. Sunt rugat să obțin un nume de fructe aleatoriu pentru a fi afișat pe ecran. Am executat programul și toate valorile sunt stocate într-o coloană. Vreau să creez o altă clasă pentru a obține valorile din matrice din programul de mai sus.
adăugat autor user1416640, sursa

1 răspunsuri

Efectuați array pe care ați declarat-o ca o variabilă privată, inițializați-o într-un bloc static și adăugați metodele getter și setter pentru aceasta. Nu există niciun folos de getter-setter aici, dar asta este doar pentru înțelegerea ta.

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);
    ....
    }
    ....
}

Apoi, din cealaltă clasă (să presupunem că Display.java), trebuie să creați un obiect din această clasă și apoi să accesați această matrice:

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
adăugat
O.K. Vad eroarea ca outputResultSet este o metodă statică, nu putem folosi codul de mai sus așa cum este. Se va actualiza.
adăugat autor mtk, sursa
Nu a fost compilat și verificat ultima dată. Actualizat acum și, de asemenea, compilat și verificat. Te rog să-mi spui dacă ai vreo greșeală.
adăugat autor mtk, sursa
hei .. ce e de eroare? Lucrează la sfârșitul meu. Cum ați actualizat codul în consecință. Verificați.
adăugat autor mtk, sursa
Mulțumesc mult mtk, lasă-mă să încerc. Sper că o pot face!
adăugat autor user1416640, sursa
Bună Mtk, mulțumesc pentru ajutorul vostru. De fapt, sunt foarte nou cu java. Nu știu unde să pun codurile în prima parte. Această misiune este destul de greu pentru mine.
adăugat autor user1416640, sursa
Ne pare rău, am primit următoarea eroare pentru FruitDatabase.java
adăugat autor user1416640, sursa
C: \ Users \ bauyeung \ Documents \ JCreator LE \ MyProjects \ Hangman \ src \ FruitDatabase.java: 32: eroare: variabila non-statica aceasta nu poate fi referita dintr-un context static this.array = array; ^ 1 eroare
adăugat autor user1416640, sursa
Și următoarele pentru Display.java
adăugat autor user1416640, sursa
C: \ Users \ bauyeung \ Documents \ JCreator LE \ MyProjects \ Hangman \ src \ TheHangman.java: 50: eroare: nu se poate găsi simbolul String [] fruits = FruitDatabase.getArray (); ^ simbol: metoda getArray() locație: clasa FruitDatabase 1 eroare
adăugat autor user1416640, sursa
Ești încă acolo?
adăugat autor user1416640, sursa
Îmi pare rău că funcționează ...
adăugat autor user1416640, sursa
functioneaza .. dar cum pot pune valoarea intr-o alta matrice intr-o alta clasa, va arata ca arr [0] = struguri si arr [1] = mere?
adăugat autor user1416640, sursa
de fapt am căutat codul din clasa de afișare, care probabil arata ca: FruitDatabase fd = new FruitDatabase (); String [] fructe = fd.getArray (); String ret = PickRand.get (fructe); System.out.println (ret);
adăugat autor user1416640, sursa