Как получить значение базы данных Mysql в таблице Jframe без создания кода для Jtable - PullRequest
0 голосов
/ 24 декабря 2011

Я создал таблицу ученика, как в следующих полях Stuid, имя студента, mark1, mark2 в базе данных MySQL. а также создать таблицу, используя JFrame (исходный код, дизайн), после этого я написал следующий код на стороне источника, а затем перетащил таблицу из элементов управления 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, но не показывает значение DBtable в таблице Jframe. Как я могу получить значение в таблице (элемент управления таблицы Jframe) без создания кода для таблицы. если я дважды щелкну по таблице, я не знаю, где я пишу код таблицы.

Ответы [ 3 ]

3 голосов
/ 22 марта 2014

Если вы используете NetBeans, это просто

Шаг 1

  1. щелкните правой кнопкой мыши приложение java в окне проекта
  2. Выберите New>Другие> Постоянство -> (правая сторона) классы сущностей из базы данных [Выбрать]
  3. Нажмите Далее
  4. Теперь выберите Соединение с базой данных из ComboBox и добавьте таблицу базы данных, которую вы хотите связать с jTable изСписок доступных таблиц к списку выбранных таблиц
  5. Готово

Здесь вы создали класс, который можно связать с помощью jTable

Step2

  1. Щелкните правой кнопкой мыши на jTable
  2. Выберите привязку
  3. Нажмите на элементы [откроется окно «Bind jTable.element»]
  4. Там нажмите «Импортировать данные из формы» с именем Button
  5. Выберите базу данных и таблицу из заданных ComboBox и нажмите OK
  6. Теперь там вы можете увидеть два списка со списком, названных «Доступно», и«Выбрано» в поле Выбранный список, где вы можете увидеть все атрибуты вашей базы данныхТаблица приведена в списке.
  7. Если вы хотите удалить какой-либо атрибут из этого, просто выберите его и нажмите кнопку «<<» </li>
  8. Повторно расположите атрибуты, используя кнопки «вверх» и «вниз»
  9. Нажмите OK, теперь вы можете увидеть свой jTable связанный с базой данных
  10. Законченный
0 голосов
/ 09 января 2014

Я могу сказать по кнопке, и окно открывается.

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

  }      
 }
0 голосов
/ 26 декабря 2011

Это простой способ выполнить домашнее задание, создав многоразовый 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();
   }
}

Надеюсь, это поможет, удачи!

...