分享
 
 
 

ArrayList实现的DataGrid(可以与数据库互动更新)

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import java.util.*;

import javax.swing.table.*;

class DataGrid extends JFrame{

final ArrayList alist=new ArrayList();

final String title[]={"num","name","birth","school"};

// 继承AbstractTableModel,构建表格模型

AbstractTableModel tm=new AbstractTableModel(){

public int getColumnCount(){

return title.length;

}

public int getRowCount(){

return alist.size();

}

public Object getValueAt(int row,int column){

if(!alist.isEmpty())

return ((ArrayList)alist.get(row)).get(column);

else

return null;

}

public String getColumnName(int column){

return title[column];

}

public void setValueAt(Object value,int row,int column){}

public boolean isCellEditable(int row,int column){

return false;

}

};

JTable jt=new JTable(tm);

JScrollPane jsp=new JScrollPane(jt);

//构造函数

public DataGrid()throws SQLException,ClassNotFoundException{

Connection c=connect();

/*定义可回滚并更新数据库的ResultSet

TYPE_SCROLL_SENSITIVE: 对数据库数据变化是敏感的,即当数据库发生改变是,结果集也就发生相应改变

TYPE_SCROLL_INSENSITIVE: 与前者相反

CONCUR_UPDATABLE: 结果集对数据库可更新

CONCUR_READ_ONLY: 不能更新

*/

Statement s=c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from student";

final ResultSet r=s.executeQuery(sql);

showResult(r);

//设置table内的单行选定(JTable利用的是ListSelectionModel)

jt.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

//添加表格(选定行)的双击左键事件

jt.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e){

if(e.getClickCount()==2){ //鼠标双击

//以下三句为:双击删除选定行

int row=jt.getSelectedRow();

alist.remove(row);

tm.fireTableStructureChanged();

try{

r.absolute(row+1); //结果集内数据的回滚

r.deleteRow(); //从结果集中删除光标所在的那行,并更新数据库

}catch(Exception ee){

}

}

}

});

this.getContentPane().add(jsp,BorderLayout.CENTER);

//数据库连接不能关闭,否则结果集对数据库的更新无效,关闭操作可以放在窗口关闭时间中,这里不一一实现了

//s.close();

//c.close();

}

//连接数据库方法 返回类型为 Connection

public Connection connect()throws SQLException,ClassNotFoundException{

String dburl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=da/student.mdb";

String user="";

String password="";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection c=DriverManager.getConnection(dburl,user,password);

return c;

}

//用ArrayList实现的以DataGrid 样式显示数据库中的查询结果

public void showResult(ResultSet rs)throws SQLException{

alist.clear();

tm.fireTableStructureChanged();

while(rs.next()){

ArrayList rec_alist=new ArrayList();

rec_alist.add(rs.getString(1));

rec_alist.add(rs.getString(2));

rec_alist.add(rs.getDate(3));

rec_alist.add(rs.getString(4));

alist.add(rec_alist);

}

tm.fireTableStructureChanged();

}

public static void main(String[]args)throws SQLException,ClassNotFoundException{

DataGrid fm=new DataGrid();

fm.setSize(600,400);

fm.setTitle("");

fm.setVisible(true);

fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

/* 以上数据库内表(student)结构为

num 文本

name 文本

birth 短日期

school 文本、

由于篇幅所限制,这里不一一列举,java内数据库的其他相关操作如:批处理,事务处理等,

有兴趣的可以加本人的OICQ: 27096635 EMail: migeonline@263.net

*/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有