【问题标题】:Populating JList from database SQL从数据库 SQL 填充 JList
【发布时间】:2012-04-23 10:51:32
【问题描述】:

我一直在尝试使用我的数据库中存在的信息填充下拉列表,但失败得很惨。 我看过多个指南,并且有一些成功的代码我无法复制,因为我是新手,可能错过了一些步骤。 这是我目前正在尝试的:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class populategui extends JFrame
{
    private JComboBox box;
    private JLabel picture;
    private static String[ ] filename = {rs.next};

    {
        try
    {        
            Class.forName(com.microsoft.jdbc.sqlserver);
            Connection con = (Connection)DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=LIVE;integratedsecurity=true");
            Statement st = con.createStatement();
            String query="SELECT TOP(10)*FROM ERIT";
            ResultSet rs = st.executeQuery(query);
            while(rs.next());
    }
    catch(Exception e)
    {  
    }
    };

            public populategui(){
                super ("the title");
                setLayout(new FlowLayout());
                box=new JComboBox(filename);


            }

    }

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 这里真的不够继续。它编译吗?它运行吗?有例外吗?如果是这样,堆栈跟踪是什么?
  • 它应该编译位于数据库中的信息的下拉列表...它在 NetBeans 上运行并操作 MS SQL...我不知道您所说的堆栈跟踪是什么意思,对不起跨度>
  • @NeedyHelpo - 不,这不是他的意思:请参阅我的答案。
  • java.lang.RuntimeException:无法编译的源代码 - 错误的树类型: at populategui.(populategui.java:25) at apple.main(populatetable.java:5)

标签: java sql swing jdbc jcombobox


【解决方案1】:

您的部分问题是您正在“压制”可能告诉您问题所在的异常。将其更改为(至少):

try {
    ...
} catch (Exception ex) {
    ex.printStackTrace();
}

这样你就可以看到抛出了什么异常......

更好的是,记录异常。


一般来说,捕捉java.lang.Exception 是个坏主意,因为您最终可能会捕捉到各种您没有预料到的异常。这是一个可怕的想法,捕获异常并继续,好像没有出错一样。如果您丢弃关键证据,就很难弄清楚为什么您的程序不起作用。


最后,您似乎正在尝试通过复制和粘贴您在 Internet 上找到的示例来编写 Java 代码。这是编写不可靠代码的秘诀。您需要学习正确的语言,去购买并阅读一本关于 Java 编程的好教科书,或者学习(免费的)Oracle Java 教程。

【讨论】:

  • java.lang.RuntimeException:无法编译的源代码 - 错误的树类型: at populategui.(populategui.java:25) at apple.main(populatetable.java:5)
  • @NeedyHelpo - 所以......你读过错误信息了吗? “不可编译的源代码”这句话对你有什么意义吗?如果没有,您需要花时间学习 Oracle Java 教程!
【解决方案2】:

我认为你的主要问题是在你的循环中没有操作:

ResultSet rs = st.executeQuery(query);
while(rs.next());

该代码是扩展集:

ResultSet rs = st.executeQuery(query);
while(rs.next()){
// nothing to to (n-times)
}

【讨论】:

    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2015-07-31
    • 2013-06-02
    • 2017-04-17
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多