如何在Jframe表中获取Mysql数据库值而无需为Jtable创建编码

时间:2011-12-24 08:39:12

标签: java mysql swing netbeans jframe

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

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 Table中显示DBtable值。如何在不创建表的代码的情况下获取表(Jframe表控件)中的值。如果我双击桌子,我不知道我在哪里写表格代码。

3 个答案:

答案 0 :(得分:3)

如果您使用的是NetBeans,则很容易

第1步

  1. 右键单击项目窗口中的javaApplication
  2. 选择新建&gt;其他&gt;持久性 - &gt;(右侧)来自数据库的实体类[选择]
  3. 点击下一步
  4. 现在从ComboBox中选择数据库连接,并将要与jTable绑定的数据库表从“可用表”列表框添加到“选定的表”列表框
  5. 完成
  6. 在这里,您创建了一个可以与jTable

    绑定的课程

    第2步

    1. 右键单击您的jTable
    2. 选择装订
    3. 点击元素[它将打开'绑定jTable.element'窗口]
    4. 点击“从表格导入数据”名为Button
    5. 从给定的组合框中选择数据库和表,然后单击“确定”
    6. 现在,您可以在选定列表框中看到两个名为“可用”和“已选择”的列表框,您可以看到列出的数据库表的所有属性。
    7. 如果您要从中删除任何属性,只需选择该属性,然后点击“&lt;&lt;”按钮
    8. 使用“向上”和“向下”按钮重新排列属性
    9. 现在点击确定,您可以看到jTable绑定数据库
    10. 完成

答案 1 :(得分:0)

通过创建可重复使用的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();
   }
}

希望它有所帮助,祝你好运!

答案 2 :(得分:0)

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

     {
      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());}

  }      
 }