如何在不创建Jtable代码的情况下在Jframe表中获取Mysql数据库值



我已经在Mysql数据库中创建了学生表,如以下字段Stuid, studname, mark1,mark2。并使用JFrame(source,design)创建一个表,之后我在源端编写了以下代码,然后从Swing控件中拖动表。

public void DbConnection(){
       try
{
    Class.forName("com.mysql.jdbc.Driver");//Connection establishment to the database
String username = "root";
String password = "root";
String Database = "jdbc:mysql://localhost:3306/project";

Conn = DriverManager.getConnection( Database, username, password );
System.out.println("*** Connect to the database ***");

String Query = "Select * from  StudentMaster";

Statement smnt = Conn.createStatement();
ResultSet results = smnt.executeQuery( Query );
ResultSetMetaData metaDt = results.getMetaData();
System.out.println(metaDt);
int cols = metaDt.getColumnCount();
for(int i=1;i<cols;i++){
    columnNames.addElement (metaDt.getColumnName(i));
}
 while(results.next()){
     Vector row= new Vector(cols);
     for(int i=1;i<=cols;i++){
         row.addElement(results.getObject(i));
        }
     data.addElement(row);
 }
results.close();
smnt.close();
Conn.close(); //Close Connection to the database
    }
catch(Exception e)
{
    System.out.println(e);
}
}

它正在连接Mysql数据库,但它没有显示Jframe表中的DBtable值。我如何获得表中的值(Jframe表控件),而无需创建表的代码。如果我双击表格,我不知道我在哪里写了表格代码。

如果你正在使用NetBeans,这很容易

步骤1

  1. 右键单击项目窗口中的javaApplication
  2. 选择新建>其他>持久性->(右侧)数据库中的实体类[选择]
  3. 点击下一步
  4. 现在从组合框中选择数据库连接,并将您想与jTable绑定的数据库表从"可用表"列表框添加到"已选表"列表框

这里你做了一个类,你可以绑定到你的jTable

步骤2

    右键单击jTable<
  1. 选择绑定/gh>
  2. 点击元素[它将打开'Bind jTable。元素的窗口)
  3. 点击"从表单导入数据"按钮从给定的组合框中选择数据库和表,然后单击OK
  4. 现在你可以看到两个列表框命名为'Available'和'Selected'在Selected list Box中,你可以看到你的数据库表列出的所有属性。
  5. 如果你想从这里删除任何属性,只需选择它并点击'<<'按钮
  6. 使用'up'和'down'按钮重新排列属性
  7. 点击OK,现在你可以看到你的jTable绑定与数据库
  8. 完成

通过创建一个可重用的TableModel来显示任何ResultSet的内容,这是实现作业的一种简单方法:

public class MyModel extends AbstractTableModel {
   String[] headers = {};
   ArrayList<String[]> rows;
   public MyModel() { 
      rows = new ArrayList<String[]>();
   } 
   public int getColumnCount() {
      return headers.length;
   }
   public Object getValueAt(int row, int col) { 
       if (row < 0 || row >= rows.size()) return "N/A";
       if (col < 0 || col >= headers.length) return "N/A";
       return rows.get(row)[col]; 
   }
   public int getRowCount() { 
      return rows.size(); 
   }
   public String getColumnName(int col){ 
       if (col < 0 || col >= headers.length) return "N/A";
      return headers[col]; 
   } 
   public void fill(ResultSet rs) {
       //Setting Headers
       ResultSetMetaData md = rs.getMetaData();
       int cols = md.getColumnCount();
       headers = new String[cols];
       for(int i = 1; i < cols; i++) {
          headers[i - 1] = md.getColumnName(i); 
       }
       // Setting rows
       rows.clear();
       while(rs.next()) {
          String[] row = new String[cols];
          for(int i = 1; i < cols; i++) {
             row[i - 1] = rs.getString(i);
          }
          rows.add(row);
       }
       this.fireTableDataChanged();
   }
}

希望有帮助,祝你好运!

我可以告诉按钮和窗口是打开的。

     {
      try
      {
         Class.forName("java.sql.DriverManager");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","tiger");
    sql="select * from (table name)";
    Statement st=con.createStatement();
    ResultSet rs=st.executeQuery(sql);
    jdis.getModel();
            }
             catch(Exception e)
      {JOptionPane.showMessageDialog(null,e.getMessage());}
  }      
 }

相关内容

  • 没有找到相关文章

最新更新