如何在java中使用向量定义表模型

我试图将我的 MySQL 表链接到我的 java 项目,我想在我的 java 框架上回报我的 MySQL 表。到目前为止,我已经编写了这段代码。


try{

    Class.forName(cn);

    Connection con = (Connection) DriverManager.getConnection(url, u, p);

    Statement stmt = (Statement) con.createStatement();

    String q = "select eno,name,salary,dept,(salary*12) as spa from employee;";

    ResultSet rs = stmt.executeQuery(q);

    ResultSetMetaData rsmd = rs.getMetaData();

    int cc=rsmd.getColumnCount();

    Vector columns = new Vector(cc);

    Vector data = new Vector();

    Vector row;


    while(rs.next()) {

        row=new Vector(cc);


        for (int i = 1; i <= cc; i++) {

            row.add(rs.getString(i));

        }


        data.add(row);

    }


JTable table=new JTable(data,columns);

DefaultTableModel m = new DefaultTableModel(data, columns);

jTable1.setModel(m);


} catch (Exception e){

   System.out.println(e.getMessage());

}

我已经使用了向量,现在我无法确定如何为我的表“jTable1”定义模型。MySQL表及其描述


任何帮助表示赞赏。


慕侠2389804
浏览 136回答 3
3回答

缥缈止盈

您需要为 TableModel 指定列名。现在,您刚刚定义了一个空的 Vector,因此该表认为有 0 列,因此没有可显示的内容。您可以从 ResultSetMetaData 中获取列名:String sql = "Select * from ???";Statement stmt = connection.createStatement();ResultSet rs = stmt.executeQuery( sql );ResultSetMetaData md = rs.getMetaData();int columns = md.getColumnCount();//&nbsp; Get column namesVector<Object> columnNames = new Vector<Object>();for (int i = 1; i <= columns; i++){&nbsp; &nbsp; columnNames.addElement( md.getColumnLabel(i) );}

鸿蒙传说

我认为,如果您正在使用 Swing 和数据库学习 Java 编程,这里有几个想法:尝试分阶段进行应用。从代码开始,GUI 部分只包含一些虚拟数据(不是数据库数据;您还没有连接到数据库)。在这一点上,您可以显示一个窗口 (a&nbsp;JFrame) 和其中的 a&nbsp;JTable,其中包含一些虚拟数据(例如,在程序中创建)。现在,对应用程序的数据库方面进行编码。从数据库表中获取数据并验证您是否能够读取它并将其打印到 IDE 中的控制台。成功后,将JTable的虚拟数据替换为 db 数据。您应该让应用程序显示一个窗口,其中包含一个JTable和查询的数据库数据。这是Oracle 的 Java 教程中JTable使用 Swing GUI构建的链接。

白衣非少年

我可以提供一些建议来改进您的代码:不要在方法范围内创建数据库连接。使用池来管理它们并将连接传递给需要它的对象。使您的 SQL 成为静态字符串。该存储过程为您做什么?直接,vanilla SQL 应该足以查询一个表。您应该知道您的存储过程返回什么。为什么要使用 ResultSetMetaData?根据 camickr 的建议,继续使用您正在使用 Swing 的 Vector b/c。您不会关闭方法范围内的任何资源。不要将异常消息打印到控制台。记录整个堆栈跟踪;它将比单纯的消息有更多的信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java