-1

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

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


            }

    }

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

4

2 回答 2

1

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

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

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

更好的是,记录异常。


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


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

于 2012-04-23T11:15:30.550 回答
0

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

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

该代码是扩展的:

ResultSet rs = st.executeQuery(query);
while(rs.next()){
// nothing to to (n-times)
}
于 2012-04-23T11:28:39.190 回答