java - 创建一个类以从 derby 数据库获取值

标签 java arrays 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);
    }

}

最佳答案

将您声明为私有(private)变量的数组,在静态 block 中对其进行初始化,并为其添加 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;
    }
    }
}

关于java - 创建一个类以从 derby 数据库获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749319/

相关文章:

java - 致命异常 - 调用 recognize() Google Speech API Android

c++ - 标准如何定义运行时绑定(bind)数组的捕获?

java - 配置错误。连接到数据库时找不到类 [org.apache.derby.jdbc.EmbeddedDriver]

mysql - 为什么 BOOLEAN 类型列在关系数据库设计中存在问题?

java - CollapsingToolbarLayout 和 FloatingActionButton

使用 tcp/ip 的 Java 客户端服务器程序

c - 如何在 C 中检查动态分配的字符串数组中的每个字符?

java - 如何以小写名称创建表 - JavaDB/Derby?

java - 使用空格时字符串索引越界异常

php - 如果数组键是连续的,则将默认值添加到数组以填补索引之间的空白