import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import com.mysql.jdbc.DatabaseMetaData; public class zonglan extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; JTable table; JPanel overViewPanel; JButton button_overview; DefaultTableModel dataModel; // 新建一个默认数据模型 public zonglan() { init(); setBounds(300, 150, 700, 550); setVisible(true); setTitle("图书总览界面"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } void init() { overViewPanel = new JPanel(); button_overview = new JButton("总览"); dataModel = new DefaultTableModel();//初始化数据模型 table = new JTable(dataModel);//数据模型与表格绑定 add(overViewPanel); overViewPanel.add(button_overview); overViewPanel.add(new JScrollPane(table)); button_overview.addActionListener(this); } public void actionPerformed(ActionEvent e) { Connection con = null; Statement sql; ResultSet resultSql, resultMetadata; int metaCount = 0; try { ljsjk strCon = new ljsjk(); con = strCon.SqlConnection(con); sql = con.createStatement(); DatabaseMetaData metadata = (DatabaseMetaData) con.getMetaData();// 定义数据库元数据对象,并用连接对象调用方法获取元数据初始化它 resultMetadata = metadata.getColumns(null, null, "books", null);// 获取元数据的行数,并保存到结果集对象中 while (resultMetadata.next()) { metaCount++; // 统计结果集的行数,该结果集行数也是数据表的列数 } String b[][] = new String[50][metaCount];// 50指表格行数,metaCount指表格列数; resultSql = sql.executeQuery("select * from books"); ResultSetMetaData resultSetMetaData = resultSql.getMetaData(); String columnName[] = new String[metaCount]; for (int i = 1; i <= metaCount; i++) { columnName[i - 1] = resultSetMetaData.getColumnName(i); // 第i列列名 } for (int i = 0; resultSql.next(); i++) { for (int j = 0; j < metaCount; j++) { b[i][j] = resultSql.getString(j + 1); } } dataModel.setDataVector(b, columnName); con.close(); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "数据库操作失败!" + ex.toString(), "警告提示!", JOptionPane.WARNING_MESSAGE); } } }
67行附近把接收类型强转一下