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

9rnv2umw  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(350)

我试图将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());
}

我已经使用了vectors,现在我不知道如何为我的表jtable1.mysql表及其描述定义一个模型
感谢您的帮助。

dkqlctbz

dkqlctbz1#

我认为,如果您正在学习使用swing和数据库进行java编程,这里有两个想法:
试着分阶段申请。
从gui部分的代码开始,只使用一些虚拟数据(不是数据库数据;您尚未连接到数据库)。
此时,您可以显示一个窗口(a JFrame )和一个 JTable 其中包含一些虚拟数据(例如,在程序中创建的)。
现在,编写应用程序的数据库方面的代码。
从数据库表中获取数据,并验证是否能够读取数据并将其打印到ide中的控制台。
一旦成功,替换 JTable 的虚拟数据与数据库数据。
你应该让应用程序显示一个带有 JTable 并查询其中的数据库数据。
以下是要构建的链接 JTable 在oracle的java教程中使用swing gui。

u1ehiz5o

u1ehiz5o2#

您需要为tablemodel指定列名。现在,您刚刚定义了一个空向量,因此表认为有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) );
}
8wigbo56

8wigbo563#

我可以提供一些改进代码的建议:
不要在方法作用域中创建数据库连接。使用池来管理它们,并将连接传递到需要它的对象中。
使sql成为静态字符串。
那个存储过程在为您做什么?简单、普通的sql应该足以查询一个表。
您应该知道存储过程返回了什么。为什么使用resultsetmetadata?
根据camickr的建议,继续使用你正在使用的向量b/c。
不关闭方法范围中的任何资源。
不要将异常消息打印到控制台。记录整个堆栈跟踪;它将有更多的信息比单纯的信息。

相关问题