2015-01-07 2 views
1

Привет, я успешно связал мою базу данных jTable с JDBC. Однако у меня возникают проблемы с их извлечением. Я хочу, чтобы сохраненные данные появлялись, когда я перезапускаю программу, но она не работает.Извлечение данных из базы данных JDBC в Jtable

alarm.setText(""); 
    DefaultTableModel model =(DefaultTableModel) hwList.getModel(); 
    if(!className.getText().trim().equals("")) 
    { 
     model.addRow(new Object[]{className.getText(), homeWork.getText(), dueDate.getText()}); 
    } 
    else 
    { 
     alarm.setText("Class Name should not be blank."); 
    } 

     Connection conn; 
     Statement st; 

     try 
    { 
     String myDriver = "com.mysql.jdbc.Driver"; 
     String myUrl = "jdbc:mysql://localhost:3306/mysql"; 
     Class.forName("com.mysql.jdbc.Driver"); 
     System.out.println("Connecting to database"); 
     conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", ""); 
     System.out.println("Connected to databse"); 


     String a = className.getText(); 
     String b = homeWork.getText(); 
     String c = dueDate.getText();    

     System.out.println("Inserting into the table"); 
     st = conn.createStatement(); 
     String stmt="INSERT INTO hwList (className, homeWork, dueDate)"+ "VALUES ("+"\'"+a+"\',"+"\'"+b+"\',"+"\'"+c+"\')"; 
     System.out.println(stmt); 
     st.executeUpdate(stmt); 

     System.out.println("Saved!"); 

    } 
    catch (Exception e) 
    { 
     System.err.println("Got an exception!"); 
     System.err.println(e.getMessage()); 
    }  

Это мой код для сохранения документа!

Есть ли способ получить данные в базе данных JDBC и показать их через Jtable? Мне очень жаль просить такой простой вопрос, но я новичок в java, и мне отчаянно нужна помощь!

Большое вам спасибо!

код, используемый для загрузки данных ...

Btw, мой JTable представляет собой таблицу 3 колонки с тремя колоннами - Classname, домашние задания, DueDate соответственно. Спасибо!

String sql="SELECT * FROM hwList"; 
ResultSet rs = st.executeQuery(sql); 
while(rs.next()) 
{ 
    String d = rs.getString("className"); 
    String e = rs.getString("homeWork"); 
    String f = rs.getString("dueDate"); 
} 
+0

Где вы 'select' заявление, в котором вы загрузить новые данные? – MadProgrammer

+0

извините. Я новичок на сайте, и я просто не смог найти свой оригинальный пост. Что значит создать переменную экземпляра? Спасибо! – mhk

+0

Я имею в виду, что «вам нужно принять это и обновить исходный вопрос, но в основном вам нужно создать экземпляр TableModel и поместить каждую строку данных в модель». Это означает? создать экземпляр TableModel? – mhk

ответ

11

Начнем с создания нового TableModel ...

DefaultTableModel model = new DefaultTableModel(new String[]{"Class Name", "Home work", "Due Date"}, 0); 

Загрузите данные из базы данных ...

String sql="SELECT * FROM hwList"; 
ResultSet rs = st.executeQuery(sql); 

Добавить каждую строку данных в табличной модели ...

while(rs.next()) 
{ 
    String d = rs.getString("className"); 
    String e = rs.getString("homeWork"); 
    String f = rs.getString("dueDate"); 
    model.addRow(new Object[]{d, e, f}); 
} 

Применить модель к вашему JTable ...

table.setModel(model); 

Вы также можете посмотреть на The try-with-resources Statement и убедитесь, что вы управляете своими ресурсами правильно

+0

он наконец-то работает !!! Большое вам спасибо! !!!!!!!! за то, что помог мне, и мне очень жаль вас раздражать :(Еще раз спасибо! – mhk

0

Hie,

  1. Измените ваш ResultSet к ArrayList
  2. Создание модели для вашего JTalbe, который использует данные из ArrayList

Это должно работать.

+0

Как это загружает данные из базы данных? – MadProgrammer

+0

Вы сказали, что я хочу показать данные в таблице. – JWizard

+0

* «Есть ли способ получить данные в базе данных JDBC и показать их через Jtable?» * ... – MadProgrammer

1
String myDriver = "com.mysql.jdbc.Driver"; 
String myUrl = "jdbc:mysql://localhost:3306/mysql"; 
Class.forName("com.mysql.jdbc.Driver"); 
System.out.println("Connecting to database"); 
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", ""); 
System.out.println("Connected to databse"); 
Statement st; 
Vector data = new Vector(); 
try { 
    st = connection.createStatement(); 
    ResultSet res = st.executeQuery("SELECT col_name FROM table_name"); 
    ResultSetMetaData metaData = res.getMetaData(); 
    int columns = metaData.getColumnCount(); 
    while (res.next()) { 
     Vector row = new Vector(columns); 
     for (int i = 1; i <= columns; i++) { 
     row.addElement(res.getObject(i)); 
     } 
     data.addElement(row); 
    } 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 
Vector columnNames = new Vector(); 
columnNames.addElement("col_1"); 
columnNames.addElement("col_name_n"); 
table = new JTable(data,columnNames); 

Вы можете использовать что-то наподобие приведенного выше кода для извлечения данных из базы данных и сохранения их в jtable.

+0

'table = new JTable (data, columnNames);' не требуется, если вы никогда не строили таблицу раньше , Просто создайте новую модель и примените к существующему экземпляру 'JTable' ... – MadProgrammer

0

Сначала создайте модель таблицы затем использовать эту функцию fetch_data(). Убедитесь, что соединение с базой данных работает. Вызвать функцию в главном конструкторе. Вот и все.

DefaultTableModel dm; 

dm=(DefaultTableModel) jTable1.getModel(); 

public void fetch_data(){ 

    try{ 
     String sql= "select * from tbl_name"; 
     ResultSet rs=st.executeQuery(sql); 
     YourjTableName.setModel(DbUtils.resultSetToTableModel(rs)); 
    }catch(Exception e){ 
     System.out.println(e); 
    } 
} 
0

Шаг: 1

import javax.swing.*; 
import java.awt.*; 
import javax.swing.table.DefaultTableModel; 
import java.sql.*; 
public class UserList extends JFrame { 
    DefaultTableModel model = new DefaultTableModel(); 
    Container cnt = this.getContentPane(); 
    JTable jtbl = new JTable(model); 
    public UserList() { 
     cnt.setLayout(new FlowLayout(FlowLayout.LEFT)); 
     model.addColumn("Id"); 
     model.addColumn("Username"); 
     model.addColumn("Password"); 
     model.addColumn("Create"); 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost/java_db", "root", ""); 
      PreparedStatement pstm = con.prepareStatement("SELECT * FROM users"); 
      ResultSet Rs = pstm.executeQuery(); 
      while(Rs.next()){ 
       model.addRow(new Object[]{Rs.getInt(1), Rs.getString(2),Rs.getString(3),Rs.getString(4)}); 
      } 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
     JScrollPane pg = new JScrollPane(jtbl); 
     cnt.add(pg); 
     this.pack(); 
    } 
} 

Шаг: 2

import javax.swing.JFrame; 
public class Main { 
    public static void main(String[] args) { 
     JFrame frame = new UserList(); 
     frame.setTitle("Swing Example"); 
     frame.setSize(500, 300); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 

Демонстрация

enter image description here

+0

Не забывайте Добавить драйвер JDBC –

Смежные вопросы