java的defaulttablemodel怎么和数据库连接
时间: 2023-06-17 08:04:15 浏览: 57
Java的DefaultTableModel是Swing中JTable的默认数据模型,用于管理表格中的数据。如果要与数据库连接,可以使用Java的JDBC技术。
以下是一个简单的例子,演示如何使用DefaultTableModel与数据库连接:
```java
import java.sql.*;
import javax.swing.table.DefaultTableModel;
public class DBTableModel extends DefaultTableModel {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
public DBTableModel(String host, String user, String password, String database, String table) throws SQLException {
super();
String url = "jdbc:mysql://" + host + "/" + database;
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM " + table);
ResultSetMetaData meta = rs.getMetaData();
int columnCount = meta.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
addColumn(meta.getColumnName(i));
}
while (rs.next()) {
Object[] rowData = new Object[columnCount];
for (int i = 1; i <= columnCount; i++) {
rowData[i - 1] = rs.getObject(i);
}
addRow(rowData);
}
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
public void close() {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
上面这个例子中,我们创建了一个名为DBTableModel的类,它继承自DefaultTableModel,并且可以连接到MySQL数据库,并将数据填充到表格中。在构造函数中,我们使用JDBC连接到数据库,并使用SELECT语句查询表中的所有数据。然后,使用ResultSetMetaData获取表的元数据,包括列数和列名。接着,我们使用while循环遍历ResultSet中的所有行,创建一个Object数组来保存每一行的数据,然后将该行添加到表格中。最后,我们重写了isCellEditable方法,使表格中的单元格为只读,以防止用户修改数据。close方法用于关闭连接。
使用DBTableModel的例子:
```java
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.JScrollPane;
public class DBTableDemo {
public static void main(String[] args) {
try {
DBTableModel model = new DBTableModel("localhost", "root", "password", "test", "students");
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
JFrame frame = new JFrame("DB Table");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
上面这个例子中,我们创建了一个名为DBTableDemo的类,它使用DBTableModel来显示MySQL数据库中的表格。在main方法中,我们创建了一个新的DBTableModel对象,并将其传递给JTable的构造函数,然后将其包装在JScrollPane中,并将其添加到JFrame中显示。注意,如果连接失败或查询失败,将会抛出SQLException异常。