JTable 中如何实现增加、删除、修改等操作(UP有分)。

Goal3 2005-11-07 12:46:09
一直做B/S开发,对swing开发还不是很了解,想问一下各位大侠:
在一个JTable中,实现增加、删除、修改等操作?
我知道,如果是用JBuilder公司的dbSwing控件的话,里面有一个JdbTable,可以实现将一个TABLE中的所有修改过的(包括增加、删除、修改)数据,通过dataset保存到数据库中。
但如果,自己写的话,要如何实现呢?
给个思路也行啊~~
...全文
857 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
icefire1512 2005-12-27
  • 打赏
  • 举报
回复
得修改TableModel中的数据,弄不好连TableModel都要改
sean_lord 2005-12-22
  • 打赏
  • 举报
回复
如果有多个数据表的话,是不是还要考虑数据库的一致性,如果是这样的话,上面的那些方法是不是仍然还适用呢?谢谢!
gaizaozhe 2005-12-21
  • 打赏
  • 举报
回复
gary_jojo(英雄!哗,大英雄!)
请问下...
你用你说的那种方法时....在更新和插入操作的时候...
是使用resultSet的updatexxx方法...还是使用执行SQL语句的方法

最近在做一个课程设计...用JDBC连接数据库...
刚开始的时候用的也是你说的那个方法...但是在用resultSet的updatexxx更新和插入数据
的时候...却遇到了类型匹配问题.....到现在还没搞懂~~~
caiway 2005-12-15
  • 打赏
  • 举报
回复
up
gary_jojo 2005-12-08
  • 打赏
  • 举报
回复
不用啊,你每修改一条记录,根据主键把数据库里相应的更新就可以啦,其他的不用动.
Goal3 2005-11-10
  • 打赏
  • 举报
回复
gary_jojo(英雄!哗,大英雄!) 兄弟的方法好象可以,我回去再仔细看一下。

保存时,是要将vector里面的内容全部存回到数据库吗? 还是很麻烦的,因为,你要将VECTOR里的每条记录和数据库里的进行比较,再决定是inert 还是 UPDATE, 操作数据的次数是不是太多了?
zhouqi724 2005-11-09
  • 打赏
  • 举报
回复
去看看jdk1.5里的demo程序
abcd9845 2005-11-09
  • 打赏
  • 举报
回复
你可以建立一个空白的table来进行输入,可以用按钮来控制增加和减少行
如果有原来的数据保存实现起来很麻烦
Goal3 2005-11-09
  • 打赏
  • 举报
回复
楼上的: 哪是要把所有的jTable里的值都保存吗?
还是只保存修改过的数据?
gary_jojo 2005-11-09
  • 打赏
  • 举报
回复
我是这样做的
1.设置自己的TABLEMODEL,包括TITLE和存放数据的VECTOR,我是EXTENDS了ABSTRACTTABLEMODEL的,你也可以直接使用DEFAULTTABLEMODEL
2.遍历数据库,把每个字段的值存到VECTOR里.每条记录又是一个VECTOR,显示在表上.
3.如果需要添加删除修改只要先修改VECTOR中的数据,然后等保存的时候再组成相应的SQL语句传给数据库实现真正的物理操作
下面这篇对使用TABLE的初学者(比如我)还是蛮有用的,上手比较快
http://www.matrix.org.cn/resource/article/481.html
abcd9845 2005-11-07
  • 打赏
  • 举报
回复
增加把jtable值取出来保存就可以了.getValue(row,column)
删除有两种一种是你所选择的行进行删除,第二个就是全部删除。删除你选择的可以判断你选择的是第几行然后把值取出来在数据库里面删除,全部删除就是返回所有行做一个循环删除
修改意思也差不多如果是数据库主健那行最好设置成不可修改
网络精灵 2005-11-07
  • 打赏
  • 举报
回复
我这有个小例子,不知对你是否有帮助。
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

class TableTest extends Frame {



public static void main(String args[]) {
JFrame frame =new TableFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();

}
}

class TableFrame extends JFrame{
public TableFrame(){
setTitle("");
setSize(WIDTH,HEIGHT);

TableTestModel model=new TableTestModel(getResultSet());
JTable table=new JTable(model);
getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);
}

public ResultSet getResultSet(){
try {
Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://localhost:1982/test";
String user="root";
String pass="";

Connection con=DriverManager.getConnection(url,user,pass);
PreparedStatement pst=con.prepareStatement("Select * from users");
//pst.addBatch();
rs=pst.executeQuery();
return rs;
}
catch (Exception ex) {
System.out.println (ex);
return null;
}
}

private ResultSet rs;

private static final int WIDTH=400;
private static final int HEIGHT=300;
}

class TableTestModel extends AbstractTableModel{
public TableTestModel(ResultSet aResultSet){
rs=aResultSet;
try {
rsmd=rs.getMetaData();
}
catch (Exception ex) {
}
}

public Object getValueAt(int r,int c){
try {
rs.absolute(r+1);
return rs.getObject(c+1);
}
catch (Exception ex) {
return null;
}
}
public int getColumnCount(){
try {
return rsmd.getColumnCount();

}
catch (Exception ex) {
return 0;
}
}
public int getRowCount(){
try {
rs.last();
return rs.getRow();
}
catch (Exception ex) {
return 0;
}
}
public boolean isCellEditable(int r,int c){
return true;
}

public String getColumnName(int c){
try {
return rsmd.getColumnName(c+1);
}
catch (Exception ex) {
return "";
}

}
private ResultSet rs;
private ResultSetMetaData rsmd;
}

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧