java - 使用 Java 中的 sql 查询结果将数据加载到组合对象中

标签 java mysql combobox

我想用 sql 查询的结果加载一个组合对象。我不知道如何将 List 转换为 String[]。 我的来源如下:

public static void loadJadlospis() {
    List<String[]> ans1= null;
    String[] comboData=null;

    MySQL.Connect();
    ans1 = MySQL.sqlQuery("SELECT NazwaJadlospisu FROM Jadlospis GROUP BY NazwaJadlospisu");
    MySQL.Close();

    int a=0;
    for( String[] row: ans1 ){
        a=a+1;
        System.out.print( row[0] );
        comboData[a]=(row[0] + ",");
    }
    combo.setItems(comboData);  
}

此代码无效。我收到一个错误:线程“主”java.lang.NullPointerException 中的异常 你能给我一些关于如何让它工作的建议吗?


更新 1: 下面你可以看到 MySQL.sqlQuery 源:

public static List<String[]> sqlQuery(String sql){
    List<String[]> table= new ArrayList<>();

    try{
        state = con.createStatement();
        result = state.executeQuery(sql);
        int nCol = result.getMetaData().getColumnCount();
        while(result.next()){
            String[] row = new String[nCol];
            for( int iCol = 1; iCol <= nCol; iCol++ ){
                    Object obj = result.getObject( iCol );
                    row[iCol-1] = (obj == null) ?null:obj.toString();
                }
            table.add( row );
            }    
        }
    catch(SQLException e){
        System.err.println("Query error. " +e);
        }
    catch(NullPointerException e){
        System.err.println("Element not found." +e);
        }
    return table;
    }

更新 2

我使用以下代码来检查 ans1:

List<String[]> ans1= null;


MySQL.Connect();
ans1 = MySQL.sqlQuery("SELECT NazwaJadlospisu FROM Jadlospis GROUP BY NazwaJadlospisu");
for( String[] row: ans1 ){
    System.out.print( row[0] );
    System.out.println();
}
MySQL.Close();

它打印这个:

Successfully connected to database. 
dieta 1500 kcal 
dieta testowa1 
test1 
Database closed successfully.

最佳答案

您可以通过以下方式进行。在这里,我假设 ans1 有一个字符串类型值列表,您可以将列表转换为字符串,例如 list.toArray(new String[0])

public static void loadJadlospis() {
    List<String[]> ans1= null;
    MySQL.Connect();
    ans1 = MySQL.sqlQuery("SELECT NazwaJadlospisu FROM Jadlospis GROUP BY NazwaJadlospisu");
    MySQL.Close();
    List<String> rowsList = new ArrayList<>()   
    for(String[] rows: ans1) {
      for(String str: rows) {
         rowsList.add(str);
       }
    }   
    String[] comboData=rowsList.toArray(new String[0]);
    combo.setItems(comboData);  
}

关于java - 使用 Java 中的 sql 查询结果将数据加载到组合对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58884680/

相关文章:

mysql - 触发器 - 语法错误 #1064 新/旧

mysql - MySQL 中的 JSON,返回 1(共 3 个)部门,列出所有员工

c# - MySQL 与另外两个表一起创建一个表并使用 C# WinForms 添加记录

WPF 禁用基于组合框选定项的文本框

c# - 如何在文本框中显示来自 MySQL 的信息?

java - 使用 Spring Data 时是否需要手动设置服务器端关系?

java - 使用静态编译的 Groovy 2.0 的性能如何

java - 错误 :Execution failed for task ':app:transformClassesAndResourcesWithProguardForDebug'

java - 命令模式和迭代器模式有什么区别?

combobox - Python GTK : how to check if a combobox is open?