どのようにしてjtableでデータをデータベースに変更するか

JTableからデータベースにデータを更新するには、以下の手順に従う必要があります。
1. 選択された行と列のデータを取得する: JTableの`getSelectedRow()`と`getSelectedColumn()`メソッドを使用して、選択された行と列のインデックスを取得します。次に、JTableの`getValueAt()`メソッドを使用して、選択されたセルの値を取得します。
2. データベースに接続する: JDBCまたはその他のデータベース接続方法を使用して、データベースに接続します。
3. データベース内のデータを更新する: 選択された行と列のデータに基づいて、適切なSQL文を構築し、JDBCのStatementまたはPreparedStatementオブジェクトを使用して、データをデータベースに更新します。以下は、JTableを使用してデータベースにデータを更新する方法を説明するサンプルコードです。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class JTableExample extends JFrame {

private JTable table;

 

private JButton updateButton;

 

private Connection connection;

 

public JTableExample() {

 

// 创建JTable和按钮

 

table = new JTable();

 

updateButton = new JButton(“Update”);

 

// 添加按钮点击事件的监听器

 

updateButton.addActionListener(new ActionListener() {

 

@Override

 

public void actionPerformed(ActionEvent e) {

 

updateData();

 

}

 

});

 

// 添加JTable和按钮到窗口

 

setLayout(new BorderLayout());

 

add(new JScrollPane(table), BorderLayout.CENTER);

 

add(updateButton, BorderLayout.SOUTH);

 

// 连接数据库并加载数据到JTable

 

try {

 

connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/             mydatabase”, “username”, “password”);

 

Statement statement = connection.createStatement();

 

ResultSet resultSet = statement.executeQuery(“SELECT * FROM mytable”);

 

ResultSetMetaData metaData = resultSet.getMetaData();

 

// 创建一个DefaultTableModel来存储数据库中的数据

 

DefaultTableModel model = new DefaultTableModel();

 

// 添加表头

 

int columnCount = metaData.getColumnCount();

 

for (int i = 1; i <= columnCount; i++) {

 

model.addColumn(metaData.getColumnName(i));

 

}

 

// 添加数据行

 

while (resultSet.next()) {

 

Object[] rowData = new Object[columnCount];

 

for (int i = 1; i <= columnCount; i++) {

 

rowData[i – 1] = resultSet.getObject(i);

 

}

 

model.addRow(rowData);

 

}

 

// 将DefaultTableModel设置为JTable的数据模型

 

table.setModel(model);

 

} catch (SQLException e) {

 

e.printStackTrace();

 

}

 

// 设置窗口属性

 

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

pack();

 

setLocationRelativeTo(null);

 

setVisible(true);

 

}

 

private void updateData() {

 

int selectedRow = table.getSelectedRow();

 

int selectedColumn = table.getSelectedColumn();

 

Object selectedValue = table.getValueAt(selectedRow, selectedColumn);

 

// 构建更新数据的SQL语句

 

String updateSql = “UPDATE mytable SET ” + table.getColumnName(selectedColumn)          + ” = ? WHERE id = ?”;

 

try {

 

PreparedStatement preparedStatement = connection.prepareStatement(updateSql);

 

preparedStatement.setObject(1, selectedValue);

 

preparedStatement.setInt(2, (int) table.getValueAt(selectedRow, 0));

 

preparedStatement.executeUpdate();

 

// 更新JTable的数据模型

 

DefaultTableModel model = (DefaultTableModel) table.getModel();

 

model.setValueAt(selectedValue, selectedRow, selectedColumn);

 

} catch (SQLException e) {

 

e.printStackTrace();

 

}

 

}

 

public static void main(String[] args) {

 

SwingUtilities.invokeLater(new Runnable() {

 

@Override

 

public void run() {

 

new JTableExample();

 

}

 

});

 

} }


データベース接続URL、ユーザー名、パスワード、updateData()メソッド内のSQL文とテーブル名を、ご自身のデータベースとテーブル構造に合わせて置換する必要があります。

bannerAds