创建一个类以从derby数据库中获取价值

我创建了一个类来连接到一个derby数据库。在程序中,我创建了表格并将一些水果名称作为值插入。我只是想知道如何创建另一个类来获取新数组中的水果名称值。

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
完全不理解这个问题?您是否想使用select查询从数据库中获取水果名称?你在问什么?
额外 作者 mtk,
其实,这是由我的导师准备的很好的编码。我被要求随机获取水果名称以显示在屏幕上。我已经运行该程序,并且所有值都存储在一列中。我想创建另一个类来从上述程序中获取数组中的值。
额外 作者 user1416640,

1 答案

将您声明的 array 作为私有变量,将其初始化为静态块并为其添加getter和setter方法。这里没有使用getter-setter,但这只是为了您的理解。

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,
非常感谢mtk,让我试试。我希望我能做到!
额外 作者 user1416640,
您好,感谢您的大力帮助。其实我真的与Java新。我只是不知道在第一部分中我应该把代码放在哪里。这项任务对我来说很难。
额外 作者 user1416640,
抱歉,我的FruitDatabase.java出现以下错误
额外 作者 user1416640,
C:\ Users \ bauyeung \ Documents \ JCreator LE \ MyProjects \ Hangman \ src \ FruitDatabase.java:32:error:非静态变量,不能从静态上下文中引用this.array = array; ^ 1错误
额外 作者 user1416640,
以下为Display.java
额外 作者 user1416640,
C:\ Users \ bauyeung \ Documents \ JCreator LE \ MyProjects \ Hangman \ src \ TheHangman.java:50:error:can not find symbol String [] fruits = FruitDatabase.getArray(); ^ symbol:method getArray()location:class FruitDatabase 1错误
额外 作者 user1416640,
你还在那里吗?
额外 作者 user1416640,
对不起,它有效...
额外 作者 user1416640,
它的工作原理..但我怎么能把值放到另一个类的另一个数组中,看起来像arr [0] = grape和arr [1] = apple?
额外 作者 user1416640,
实际上,我正在寻找显示类中的代码,可能看起来像下面这样:FruitDatabase fd = new FruitDatabase(); String [] fruits = fd.getArray(); String ret = PickRand.get(fruits);的System.out.println(RET);
额外 作者 user1416640,