为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕侠2389804 2021-08-19 17:42:00
我试图将我的 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表及其描述任何帮助表示赞赏。
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您需要为 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();


//  Get column names


Vector<Object> columnNames = new Vector<Object>();


for (int i = 1; i <= columns; i++)

{

    columnNames.addElement( md.getColumnLabel(i) );

}


查看完整回答
反对 回复 2021-08-19
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

我认为,如果您正在使用 Swing 和数据库学习 Java 编程,这里有几个想法:

  1. 尝试分阶段进行应用。

  2. 从代码开始,GUI 部分只包含一些虚拟数据(不是数据库数据;您还没有连接到数据库)。

  3. 在这一点上,您可以显示一个窗口 (a JFrame) 和其中的 a JTable,其中包含一些虚拟数据(例如,在程序中创建)。

  4. 现在,对应用程序的数据库方面进行编码。

  5. 从数据库表中获取数据并验证您是否能够读取它并将其打印到 IDE 中的控制台。

  6. 成功后,将JTable的虚拟数据替换为 db 数据。

  7. 您应该让应用程序显示一个窗口,其中包含一个JTable和查询的数据库数据。

这是Oracle 的 Java 教程中JTable使用 Swing GUI构建的链接。


查看完整回答
反对 回复 2021-08-19
?
白衣非少年

TA贡献1155条经验 获得超0个赞

我可以提供一些建议来改进您的代码:

  1. 不要在方法范围内创建数据库连接。使用池来管理它们并将连接传递给需要它的对象。

  2. 使您的 SQL 成为静态字符串。

  3. 该存储过程为您做什么?直接,vanilla SQL 应该足以查询一个表。

  4. 您应该知道您的存储过程返回什么。为什么要使用 ResultSetMetaData?

  5. 根据 camickr 的建议,继续使用您正在使用 Swing 的 Vector b/c。

  6. 您不会关闭方法范围内的任何资源。

  7. 不要将异常消息打印到控制台。记录整个堆栈跟踪;它将比单纯的消息有更多的信息。


查看完整回答
反对 回复 2021-08-19
  • 3 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信