使用JTable管理数据库数据Word格式文档下载.docx
《使用JTable管理数据库数据Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《使用JTable管理数据库数据Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。
importjavax.swing.event.*;
publicclassStuMangeextendsJFrameimplementsActionListener{
//定义用户界面用到的组件
JLabeluserName=null;
//要查询的学生的名字
JTextFieldtextField=null;
//用户输入的文本框
JButtonselect=null;
//查询按钮
JButtoninsert=null;
//添加按钮
JButtonupdate=null;
//修改按钮
JButtondelete=null;
//删除按钮
JTabletable=null;
//用于显示数据库调出的数据的表
Panelpanel1=null;
Panelpanel2=null;
Panelpanel3=null;
JScrollPanejscrollPane=null;
StModelstModel=null;
//st表的模型
privateObjectPreparedStatement;
publicstaticvoidmain(String[]args){
StuMangewindow=newStuMange();
}
publicStuMange()
{
//窗口显示的上部的组件
userName=newJLabel("
学生名:
"
);
textField=newJTextField(10);
//用户输入文本框限定为最多输入10个字符
select=newJButton("
查询"
//添加到第一个面板中
panel1=newPanel();
panel1.add(userName);
panel1.add(textField);
panel1.add(select);
//窗口下部的组件
insert=newJButton("
添加"
delete=newJButton("
删除"
update=newJButton("
修改"
//添加到第三个个面板中
panel3=newPanel();
panel3.add(insert);
panel3.add(delete);
panel3.add(update);
//窗口中部的组件
stModel=newStModel();
stModel.insertDatabase("
select*fromst"
table=newJTable(stModel);
jscrollPane=newJScrollPane(table);
//注册事件监听
select.addActionListener(this);
insert.addActionListener(this);
update.addActionListener(this);
delete.addActionListener(this);
//将各个组件添加到窗体中
this.add(panel1,BorderLayout.NORTH);
this.add(jscrollPane,BorderLayout.CENTER);
this.add(panel3,BorderLayout.SOUTH);
//设置窗体属性
this.setSize(400,300);
//设置窗口大小
this.setLocation(200,200);
//设置窗口显示的位置
this.setTitle("
mini学生信息管理系统"
//设置窗口标题
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗口关闭之后其后台程序同时关闭
//this.setResizable(false);
//设置窗口不可拉伸
//设置窗口为可见
this.setVisible(true);
publicvoidactionPerformed(ActionEvente)
//用户点击了查找按钮
if(e.getSource()==select)
{
Stringparas=textField.getText().trim();
stModel=newStModel();
stModel.insertDatabase("
select*fromstwherestNname='
+paras+"
'
table.setModel(stModel);
}
//用户点击了添加按钮
elseif(e.getSource()==insert)
InsertStudentinsertStudent=newInsertStudent(this,"
添加学生"
true);
//刷新窗口表的数据
}
//用户点击了修改按钮
elseif(e.getSource()==update)
introw=this.table.getSelectedRow();
//用户选择的行数
if(-1==row)//如果用户没有选中行
JOptionPane.showMessageDialog(this,"
请选择一行"
else
UpdateDatabaseupdateDatabase=newUpdateDatabase(this,"
修改学生"
true,stModel,row);
stModel=newStModel();
}
//用户点击了删除按钮
elseif(e.getSource()==delete)
//数据库
Connectioncon=null;
PreparedStatementps=null;
Stringdriver="
com.microsoft.jdbc.sqlserver.SQLServerDriver"
;
//jdbc驱动
Stringurl="
jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;
databaseName=student"
//数据源
Stringuser="
sa"
//数据库用户密码
StringpassWord="
123"
//数据库用户sa的密码
//用户选择的行
if(-1==row)//用户没有选中行
try
{
//加载jdbc驱动
Class.forName(driver);
//连接数据源
con=DriverManager.getConnection(url,user,passWord);
//执行sql
Stringsql="
deletefromstwherestId=?
Stringid=(String)(stModel.getValueAt(row,0));
//获得用户选择的行的学生的学号
ps=con.prepareStatement(sql);
ps.setString(1,id);
ps.executeUpdate();
//刷新窗口
stModel=newStModel();
stModel.insertDatabase("
table.setModel(stModel);
}
catch(ClassNotFoundExceptione1)
e1.printStackTrace();
catch(SQLExceptione1)
finally
//关闭资源
try
{
if(null!
=ps)
{
ps.close();
}
=con)
con.close();
}
catch(SQLExceptione1)
e1.printStackTrace();
}
//--------------------------------------------------------
//StModel文件源代码:
importjavax.swing.table.*;
publicclassStModelextendsAbstractTableModel{
Vector<
String>
columNames=null;
//表的字段名称
Vector>
rowDate=null;
//表的数据
//数据库
privateConnectioncon=null;
privatePreparedStatementps=null;
privateResultSetrs=null;
privatefinalstaticStringdriver="
//加载的jdbc驱动
privatefinalstaticStringurl="
privatefinalstaticStringuser="
//数据库的用户名
privatefinalstaticStringpassWord="
//数据库的用户名的密码
//对数据库进行查找
publicvoidinsertDatabase(Stringsql)
columNames=newVector<
();
rowDate=newVector<
columNames.add("
学号"
名字"
性别"
年龄"
籍贯"
系别"
try
//加载jdbc驱动
Class.forName(driver);
//连接数据源
con=DriverManager.getConnection(url,user,passWord);
//执行sql
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next())
{
Vector<
row=newVector<
row.add(rs.getString
(1));
row.add(rs.getString
(2));
row.add(rs.getString(3));
row.add(rs.getString(4));
row.add(rs.getString(5));
row.add(rs.getString(6));
rowDate.add(row);
//将学生的一条记录(row)添加到rowDate中
}
catch(ClassNotFoundExceptione)
e.printStackTrace();
catch(SQLExceptione)
finally
//关闭数据库资源
if(null!
=rs)
rs.close();
ps.close();
con.close();
catch(SQLExceptione)
e.printStackTrace();
@Override
//返回列数
publicintgetColumnCount(){
//TODOAuto-generatedmethodstub
returnthis.columNames.size();
//返回表的行数
publicintgetRowCount(){
returnthis.rowDate.size();
//得到某行某列的数据
publicObjectgetValueAt(introwIndex,intcolumnIndex){
return((Vector)this.rowDate.get(rowIndex)).get(columnIndex);
//设置表的字段名
publicStringgetColumnName(intcolumn)
return(String)this.columNames.get(column);
//InsertStudent文件源代码:
//添加学生的对话框类
publicclassInsertStudentextendsJDialogimplementsActionListener{
privateJLabelid,name,sex,age,address,dep;
//分别代表学生的学号,名字,性别,年龄,籍贯,系别
privateJTextFieldjtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
//用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别
privateJButtonadd,canel;
//分别为添加按钮和取消按钮
privatePanelpanel1,panel2,panel3;
publicInsertStudent(Frameowner,Stringtitle,booleanmodel)
super(owner,title,model);
//实现与父类窗口对话
System.out.println("
我执行了"
//窗体的西部的组件
id=newJLabel("
学号:
name=newJLabel("
姓名:
sex=newJLabel("
age=newJLabel("
address=newJLabel("
dep=newJLabel("
系别:
//添加到panel1面板中
panel1=newPanel(newGridLayout(6,1));
panel1.add(id);
panel1.add(name);
panel1.add(sex);
panel1.add(age);
panel1.add(address);
panel1.add(dep);
//窗体的东部组件
jtf1=newJTextField(10);
jtf2=newJTextField(10);
jtf3=newJTextField(10);
jtf4=newJTextField(10);
jtf5=newJTextField(10);
jtf6=newJTextField(10);
//添加到第二个面板中
panel2=newPanel(newGridLayout(6,1));
panel2.add(jtf1);
panel2.add(jtf2);
panel2.add(jtf3);
panel2.add(jtf4);
panel2.add(jtf5);
panel2.add(jtf6);
//窗体北部的控件
add=newJButton("
canel=newJButton("
取消"
//注册事件监听
add.addActionListener(this);
canel.addActionListener(this);
//添加到panel3面板中
panel3=newPanel();
panel3.add(add);
panel3.add(canel);
//将各个组件添加到窗体中
this.add(panel1,BorderLayout.WEST);
this.add(panel2,BorderLayout.CENTER);
this.add(panel3,BorderLayout.SOUTH);
//设置对话框属性
this.setSize(300,200);
//设置对话框为可见
this.setVisible(true);
booleanresult=true;
//记录添加学生是否成功
if(e.getSource()