CREATE TABLE st
(
`stId` integer (255) NOT NULL AUTO_INCREMENT ,
`stNname` varchar (20),
`st s e x` varchar (100), // s e x 被和谐了
`stAge` varchar (100),
`stBorn` varchar (100),
`stDept` varchar (100),
PRIMARY KEY (`stId`)
)TYPE=MyISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
================================================================================
#方法1
================================================================================
package model_1;
//InsertStudent文件源代码:
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
//添加学生的对话框类
public class InsertStudent extends JDialog implements ActionListener{
private JLabel id, name, ***, age, address, dep; //分别代表学生的学号,名字,性别,年龄,籍贯,系别
private JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6; //用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别
private JButton add, canel; //分别为添加按钮和取消按钮
private Panel panel1, panel2, panel3;
public InsertStudent(Frame owner, String title, boolean model)
{
super(owner, title, model); //实现与父类窗口对话
System.out.println("我执行了");
//窗体的西部的组件
id = new JLabel("学号:");
name = new JLabel("姓名:");
*** = new JLabel("性别");
age = new JLabel("年龄");
address = new JLabel("籍贯");
dep = new JLabel("系别:");
//添加到panel1面板中
panel1 = new Panel(new GridLayout(6, 1));
panel1.add(id);
panel1.add(name);
panel1.add(***);
panel1.add(age);
panel1.add(address);
panel1.add(dep);
//窗体的东部组件
jtf1 = new JTextField(10);
jtf2 = new JTextField(10);
jtf3 = new JTextField(10);
jtf4 = new JTextField(10);
jtf5 = new JTextField(10);
jtf6 = new JTextField(10);
//添加到第二个面板中
panel2 = new Panel(new GridLayout(6, 1));
panel2.add(jtf1);
panel2.add(jtf2);
panel2.add(jtf3);
panel2.add(jtf4);
panel2.add(jtf5);
panel2.add(jtf6);
//窗体北部的控件
add = new JButton("添加");
canel = new JButton("取消");
//注册事件监听
add.addActionListener(this);
canel.addActionListener(this);
//添加到panel3面板中
panel3 = new Panel();
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);
}
public void actionPerformed(ActionEvent e)
{
//数据库
Connection con = null;
PreparedStatement ps = null;
boolean result = true; //记录添加学生是否成功
if(e.getSource() == add)
{
try
{
//加载jdbc驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//连接数据源
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:3306;databaseName=st", "feng", "1001001");
//执行sql
String sql = "insert into st values(?,?,?,?,?,?)";
ps = con.prepareStatement(sql);
ps.setString(1, jtf1.getText());
ps.setString(2, jtf2.getText());
ps.setString(3, jtf3.getText());
ps.setString(4, jtf4.getText());
ps.setString(5, jtf5.getText());
ps.setString(6, jtf6.getText());
ps.executeUpdate();
//关闭对话框
this.dispose();
}
catch(ClassNotFoundException e1)
{
result = false; //添加学生记录失败
e1.printStackTrace();
}
catch(SQLException e1)
{
result = false; //添加学生记录失败
e1.printStackTrace();
}
finally
{
//关闭资源
try
{
if(null != ps)
{
ps.close();
}
if(null != con)
{
con.close();
}
}
catch(SQLException e1)
{
e1.printStackTrace();
}
}
if(false == result)
{
JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
}
}
else if(e.getSource() == canel)
{
//关闭对话框
this.dispose();
}
}
}
================================================================================
package model_1;
//StModel文件源代码:
import java.util.*;
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
public class StModel extends AbstractTableModel{
Vector columNames = null; //表的字段名称
Vector rowDate = null; //表的数据
//数据库
private Connection con = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
/**********
//driver="org.gjt.mm.mysql.Driver";
//url="jdbc:mysql://localhost:3306/st?characterEncoding=utf8";
//user="feng";
//passWord="1001001";
//以上四行在对mysql操作时,支持linux环境。
************/
private static final String driver="org.gjt.mm.mysql.Driver";
private static final String url="jdbc:mysql://localhost:3306/st?characterEncoding=utf8";
private static final String user="feng";
private static final String passWord="1001001";
//对数据库进行查找
public void insertDatabase(String sql)
{
columNames = new Vector(); //表的字段名称
rowDate = new Vector(); //表的数据
columNames.add("学号");
columNames.add("名字");
columNames.add("性别");
columNames.add("年龄");
columNames.add("籍贯");
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 = new Vector();
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(ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
//关闭数据库资源
try
{
if(null != rs)
{
rs.close();
}
if(null != ps)
{
ps.close();
}
if(null != con)
{
con.close();
}
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
@Override
//返回列数
public int getColumnCount() {
// TODO Auto-generated method stub
return this.columNames.size();
}
@Override
//返回表的行数
public int getRowCount() {
// TODO Auto-generated method stub
return this.rowDate.size();
}
@Override
//得到某行某列的数据
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return ((Vector)this.rowDate.get(rowIndex)).get(columnIndex);
}
//设置表的字段名
public String getColumnName(int column)
{
return (String)this.columNames.get(column);
}
}
================================================================================
package model_1;
//model1模式开发:
//StuMange文件源代码:
import java.util.*;
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class StuMange extends JFrame implements ActionListener {
//定义用户界面用到的组件
JLabel userName = null; //要查询的学生的名字
JTextField textField = null; //用户输入的文本框
JButton select = null; //查询按钮
JButton insert = null; //添加按钮
JButton update = null; //修改按钮
JButton delete = null; //删除按钮
JTable table = null; //用于显示数据库调出的数据的表
Panel panel1 = null;
Panel panel2 = null;
Panel panel3 = null;
JScrollPane jscrollPane = null;
StModel stModel = null; //st表的模型
private Object PreparedStatement;
public static void main(String[] args) {
StuMange window = new StuMange();
}
public StuMange()
{
//窗口显示的上部的组件
userName = new JLabel("学生名:");
textField = new JTextField(10); //用户输入文本框限定为最多输入10个字符
select = new JButton("查询"); //查询按钮
//添加到第一个面板中
panel1 = new Panel();
panel1.add(userName);
panel1.add(textField);
panel1.add(select);
//窗口下部的组件
insert = new JButton("添加");
delete = new JButton("删除");
update = new JButton("修改");
//添加到第三个个面板中
panel3 = new Panel();
panel3.add(insert);
panel3.add(delete);
panel3.add(update);
//窗口中部的组件
stModel = new StModel();
stModel.insertDatabase("select * from st");
table = new JTable(stModel);
jscrollPane = new JScrollPane(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);
}
public void actionPerformed(ActionEvent e)
{
//用户点击了查找按钮
if(e.getSource() == select)
{
String paras = textField.getText().trim();
stModel = new StModel();
stModel.insertDatabase("select * from st where stNname='" paras "'");
table.setModel(stModel);
}
//用户点击了添加按钮
else if(e.getSource() == insert)
{
InsertStudent insertStudent = new InsertStudent(this, "添加学生", true);
//刷新窗口表的数据
stModel = new StModel();
stModel.insertDatabase("select * from st");
table.setModel(stModel);
}
//用户点击了修改按钮
else if(e.getSource() == update)
{
int row = this.table.getSelectedRow(); //用户选择的行数
if(-1 == row) //如果用户没有选中行
{
JOptionPane.showMessageDialog(this, "请选择一行");
}
else
{
UpdateDatabase updateDatabase = new UpdateDatabase(this, "修改学生", true, stModel, row);
//刷新窗口表的数据
stModel =new StModel();
stModel.insertDatabase("select * from st");
table.setModel(stModel);
}
}
//用户点击了删除按钮
else if(e.getSource() == delete)
{
//数据库
Connection con = null;
PreparedStatement ps = null;
private static final String driver="org.gjt.mm.mysql.Driver";
private static final String url="jdbc:mysql://localhost:3306/st?characterEncoding=utf8";
private static final String user="feng";
private static final String passWord="1001001";
int row = this.table.getSelectedRow(); //用户选择的行
if(-1 == row) //用户没有选中行
{
JOptionPane.showMessageDialog(this, "请选择一行");
}
else
{
try
{
//加载jdbc驱动
Class.forName(driver);
//连接数据源
con = DriverManager.getConnection(url, user, passWord);
//执行sql
String sql = "delete from st where stId=?";
String id = (String)(stModel.getValueAt(row, 0)); //获得用户选择的行的学生的学号
ps = con.prepareStatement(sql);
ps.setString(1, id);
ps.executeUpdate();
//刷新窗口
stModel = new StModel();
stModel.insertDatabase("select * from st");
table.setModel(stModel);
}
catch(ClassNotFoundException e1)
{
e1.printStackTrace();
}
catch(SQLException e1)
{
e1.printStackTrace();
}
finally
{
//关闭资源
try
{
if(null != ps)
{
ps.close();
}
if(null != con)
{
con.close();
}
}
catch(SQLException e1)
{
e1.printStackTrace();
}
}
}
}
}
}
================================================================================
package model_1;
//UpdateDatabase文件源代码
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
public class UpdateDatabase extends JDialog implements ActionListener{
JLabel id,name,***,age,address,dep; //分别为学生的学号,学生的姓名,学生的性别,学生的年龄,学生的籍贯,学生的系别的标签
JTextField jtf1, jtf2, jtf3, jtf4,jtf5, jtf6; //分别为学生的学号,姓名,性别,年龄,籍贯,系列的输入文本框
JButton update,canel; //分别为修改和取消按钮
Panel panel1 ,panel2, panel3;
public UpdateDatabase(Frame own, String title, boolean model, StModel stModel, int row)
{
super(own, title, model); //实现与父类窗口对话
//窗体西部的组件
id = new JLabel("学号");
name = new JLabel("名字");
*** = new JLabel("性别");
age = new JLabel("年龄");
address = new JLabel("地址");
dep = new JLabel("系别");
//添加到panel1中
panel1 = new Panel(new GridLayout(6, 1));
panel1.add(id);
panel1.add(name);
panel1.add(***);
panel1.add(age);
panel1.add(address);
panel1.add(dep);
//添加到窗体的东部的组件
jtf1 = new JTextField(10);
jtf1.setText((String)(stModel.getValueAt(row, 0)));
jtf1.setEditable(false);//设置学号不可修改
jtf2 = new JTextField(10);
jtf2.setText((String)(stModel.getValueAt(row, 1)));
jtf3 = new JTextField(10);
jtf3.setText((String)(stModel.getValueAt(row, 2)));
jtf4 = new JTextField(10);
jtf4.setText((String)(stModel.getValueAt(row, 3)));
jtf5 = new JTextField(10);
jtf5.setText((String)(stModel.getValueAt(row, 4)));
jtf6 = new JTextField(10);
jtf6.setText((String)(stModel.getValueAt(row, 5)));
//添加到第二个面板中
panel2 = new Panel(new GridLayout(6, 1));
panel2.add(jtf1);
panel2.add(jtf2);
panel2.add(jtf3);
panel2.add(jtf4);
panel2.add(jtf5);
panel2.add(jtf6);
//窗体南部的组件
update = new JButton("修改");
canel = new JButton("取消");
panel3 = new Panel();
panel3.add(update);
panel3.add(canel);
//注册事件监听
update.addActionListener(this);
canel.addActionListener(this);
//添加组件到窗体中
this.add(panel1, BorderLayout.WEST);
this.add(panel2, BorderLayout.CENTER);
this.add(panel3, BorderLayout.SOUTH);
//设置窗体属性
this.setSize(300, 200);
//设置窗体为可见
this.setVisible(true);
}
//响应用户操作
public void actionPerformed(ActionEvent e)
{
//数据库
Connection con = null;
PreparedStatement ps = null;
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/my_ddb?characterEncoding=utf8";
String user="feng";
String passWord="1001001";
boolean result = true; //记录修改学生是否成功
if(e.getSource() == update)
{
try
{
//加载jdbc驱动
Class.forName(driver);
//连接数据源
con = DriverManager.getConnection(url,user,passWord);
//执行sql
String sql = "update st set stNname=?, st***=?,stAge=?,stBorn=?,stDept=? where stId=? ";
ps = con.prepareStatement(sql);
//修改学生数据
ps.setString(1, jtf2.getText());
ps.setString(2, jtf3.getText());
ps.setString(3, jtf4.getText());
ps.setString(4, jtf5.getText());
ps.setString(5, jtf6.getText());
ps.setString(6, jtf1.getText());
ps.executeUpdate();
//关闭对话框
this.dispose();
}
catch(ClassNotFoundException e1)
{
result = false;
e1.printStackTrace();
}
catch(SQLException e1)
{
result = false;
e1.printStackTrace();
}
finally
{
//关闭资源
try
{
if(null != ps)
{
ps.close();
}
if(null != con)
{
con.close();
}
}
catch(SQLException e1)
{
e1.printStackTrace();
}
if(false == result)
{
JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
}
}
}
else if(e.getSource() == canel)
{
this.dispose();//关闭对话框
}
}
}
================================================================================
#方法2
================================================================================
package model_2;
//AddStu文件源代码:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import javax.swing.event.*;
public class AddStu extends JDialog implements ActionListener {
private JLabel id, name, ***, age, address, dep; //分别代表学生的学号,名字,性别,年龄,籍贯,系别
private JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6; //用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别
private JButton add, canel; //分别为添加按钮和取消按钮
private Panel panel1, panel2, panel3;
public AddStu(Frame owner, String title, boolean model)
{
super(owner, title, model); //实现与父类窗口对话
System.out.println("我执行了");
//窗体的西部的组件
id = new JLabel("学号:");
name = new JLabel("姓名:");
*** = new JLabel("性别");
age = new JLabel("年龄");
address = new JLabel("籍贯");
dep = new JLabel("系别:");
//添加到panel1面板中
panel1 = new Panel(new GridLayout(6, 1));
panel1.add(id);
panel1.add(name);
panel1.add(***);
panel1.add(age);
panel1.add(address);
panel1.add(dep);
//窗体的东部组件
jtf1 = new JTextField(10);
jtf2 = new JTextField(10);
jtf3 = new JTextField(10);
jtf4 = new JTextField(10);
jtf5 = new JTextField(10);
jtf6 = new JTextField(10);
//添加到第二个面板中
panel2 = new Panel(new GridLayout(6, 1));
panel2.add(jtf1);
panel2.add(jtf2);
panel2.add(jtf3);
panel2.add(jtf4);
panel2.add(jtf5);
panel2.add(jtf6);
//窗体北部的控件
add = new JButton("添加");
canel = new JButton("取消");
//注册事件监听
add.addActionListener(this);
canel.addActionListener(this);
//添加到panel3面板中
panel3 = new Panel();
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);
}
//响应用户的操作
public void actionPerformed(ActionEvent e)
{
//用户点击了添加按钮
if(e.getSource() == add)
{
String sql = "insert into st values(?,?,?,?,?,?)";
String[]paras = {jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText()};
//建立st表的数据模型
StuModel stuModel = new StuModel();
if(!stuModel.updateDatebase(sql, paras))
{
JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
}
else
{
//关闭对话框
this.dispose();
}
}
else if(e.getSource() == canel)
{
//关闭对话框
this.dispose();
}
}
}
================================================================================
package model_2;
//SqlHelper 文件源代码:
import java.sql.*;
//后台数据库的类
public final class SqlHelper {
//数据库
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
private static final String driver="org.gjt.mm.mysql.Driver";
private static final String url="jdbc:mysql://localhost:3306/my_ddb?characterEncoding=utf8";
private static final String user="feng";
private static final String password="1001001";
//用户对数据库进行数据查询
public ResultSet queryDatabase(String sql, String paras)
{
try
{
//加载jdbc驱动
Class.forName(driver);
//连接数据源
con = DriverManager.getConnection(url, user, password);
//执行sql
ps = con.prepareStatement(sql);
if(null != paras)
{
ps.setString(1, paras);
}
rs = ps.executeQuery();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
return rs;
}
//用户对数据库进行增删改的操作
public boolean updateDatabase(String sql, String[] paras)
{
boolean result = true; //记录对数据库的操作是否成功
try
{
//加载jdbc驱动
Class.forName(driver);
//连接数据源
con = DriverManager.getConnection(url, user, password);
//执行sql
ps = con.prepareStatement(sql);
for(int i = 0; i < paras.length; i )
{
ps.setString(i 1, paras[i]);
}
ps.executeUpdate();
}
catch(ClassNotFoundException e)
{
result = false;
e.printStackTrace();
}
catch(SQLException e)
{
result = false;
e.printStackTrace();
}
finally
{
//关闭资源
this.close();
}
return result;
}
public void close()
{
//关闭资源
try
{
if(null != ps)
{
ps.close();
}
if(null != con)
{
con.close();
}
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
================================================================================
package model_2;
//model2模式开发:
//StuMange文件源代码:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import javax.swing.event.*;
public class StuMange extends JFrame implements ActionListener {
JLabel userName; //学生名
JTextField textField ; //用户输入学生名字的文本框
JButton select, insert, update, delete; //分别代表查询,添加修改,删除的按钮
JTable table; //用于显示数据的表
Panel panel1, panel2;
JScrollPane jscrollPane;
StuModel stuModel = null; //st表的模型
public static void main(String[] args) {
StuMange stuMange = new StuMange();
}
//构造方法
public StuMange()
{
//窗体上部的组件
userName = new JLabel("学生名:");
textField = new JTextField(10);
select = new JButton("查询");
panel1 = new Panel();
//将组件添加到panel1面板中
panel1.add(userName);
panel1.add(textField);
panel1.add(select);
//窗体的中部组件
stuModel = new StuModel();
stuModel.queryDate("select * from st", null);
table = new JTable(stuModel);
jscrollPane = new JScrollPane(table);
//船体的下部组件
insert = new JButton("添加");
update = new JButton("修改");
delete = new JButton("删除");
panel2 = new Panel();
//将组件添加到panel2面板中
panel2.add(insert);
panel2.add(update);
panel2.add(delete);
//设置事件监听
select.addActionListener(this);
insert.addActionListener(this);
update.addActionListener(this);
delete.addActionListener(this);
//将各个组件添加到窗体中
this.add(panel1, BorderLayout.NORTH);
this.add(jscrollPane, BorderLayout.CENTER);
this.add(panel2, BorderLayout.SOUTH);
//设置窗体属性
this.setSize(400, 300);
this.setLocation(200, 200);
this.setTitle("mini学生信息管理系统");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体为可见
this.setVisible(true);
}
//响应用户的按键操作
public void actionPerformed(ActionEvent e)
{
//用户点击了查询按钮
if(e.getSource() == select)
{
String name = textField.getText().trim();
String sql = "select * from st where stNname=?";
stuModel = new StuModel();
stuModel.queryDate(sql, name);
//刷新窗口
table.setModel(stuModel);
}
//用户点击了添加按钮
else if(e.getSource() == insert)
{
AddStu addStu = new AddStu (this, "添加学生", true);
//刷新窗口
stuModel = new StuModel();
stuModel.queryDate("select * from st", null);
table.setModel(stuModel);
}
//用户点击了修改的按钮
else if(e.getSource() == update)
{
int row = this.table.getSelectedRow();//获得用户选中的行
if(-1 == row)
{
JOptionPane.showMessageDialog(this, "请选择行");
}
else
{
UpdateStu updateStu = new UpdateStu(this, "修改学生", true, stuModel, row);
//刷新窗口
StuModel stModel = new StuModel();
stModel.queryDate("select * from st", null);
table.setModel(stModel);
}
}
//用户点击了删除按钮
else if(e.getSource() == delete)
{
int row = this.table.getSelectedRow(); //获得用户选中的行
String id = (String)stuModel.getValueAt(row, 0);
String sql = "delete from st where stId=?";
String[]paras = {id};
stuModel.updateDatebase(sql, paras);
//刷新窗口
StuModel stuModel = new StuModel();
stuModel.queryDate("select * from st", null);
table.setModel(stuModel);
}
}
}
================================================================================
package model_2;
//StuModel文件源代码:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import javax.swing.table.*;
import java.sql.*;
public class StuModel extends AbstractTableModel {
Vector rowDate = null; //记录表的记录
Vector columnNames = null; //记录表的字段名
SqlHelper sqlHelper = null;
ResultSet rs = null;
//用户对数据库进行查询的操作
public void queryDate(String sql, String paras)
{
columnNames = new Vector();
columnNames.add("学号");
columnNames.add("名字");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("籍贯");
columnNames.add("系别");
rowDate = new Vector();
sqlHelper = new SqlHelper();
rs = sqlHelper.queryDatabase(sql, paras);
try {
while(rs.next())
{
Vector row = new Vector();
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 (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
//关闭资源
if(null != rs)
{
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sqlHelper.close();
}
}
//用户对数据库进行增删查的操作
public boolean updateDatebase(String sql, String[] paras)
{
SqlHelper sqlHelper = new SqlHelper();
return sqlHelper.updateDatabase(sql, paras);
}
@Override
//返回表的列数
public int getColumnCount() {
// TODO Auto-generated method stub
return this.columnNames.size();
}
@Override
//返回表的行数
public int getRowCount() {
// TODO Auto-generated method stub
return this.rowDate.size();
}
@Override
//返回某行某列
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return ((Vector)this.rowDate.get(rowIndex)).get(columnIndex);
}
//设置表的字段名
public String getColumnName(int column)
{
return (String)this.columnNames.get(column);
}
}
================================================================================
package model_2;
//UpdateStu文件源代码:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import javax.swing.event.*;
public class UpdateStu extends JDialog implements ActionListener{
JLabel id,name,***,age,address,dep; //分别为学生的学号,学生的姓名,学生的性别,学生的年龄,学生的籍贯,学生的系别的标签
JTextField jtf1, jtf2, jtf3, jtf4,jtf5, jtf6; //分别为学生的学号,姓名,性别,年龄,籍贯,系列的输入文本框
JButton update,canel; //分别为修改和取消按钮
Panel panel1 ,panel2, panel3;
public UpdateStu(Frame owner, String title, boolean model, StuModel stModel, int row)
{
super(owner, title, model);
//窗体西部的组件
id = new JLabel("学号");
name = new JLabel("名字");
*** = new JLabel("性别");
age = new JLabel("年龄");
address = new JLabel("地址");
dep = new JLabel("系别");
//添加到panel1中
panel1 = new Panel(new GridLayout(6, 1));
panel1.add(id);
panel1.add(name);
panel1.add(***);
panel1.add(age);
panel1.add(address);
panel1.add(dep);
//添加到窗体的东部的组件
jtf1 = new JTextField(10);
jtf1.setText((String)(stModel.getValueAt(row, 0)));
jtf1.setEditable(false);//设置学号不可修改
jtf2 = new JTextField(10);
jtf2.setText((String)(stModel.getValueAt(row, 1)));
jtf3 = new JTextField(10);
jtf3.setText((String)(stModel.getValueAt(row, 2)));
jtf4 = new JTextField(10);
jtf4.setText((String)(stModel.getValueAt(row, 3)));
jtf5 = new JTextField(10);
jtf5.setText((String)(stModel.getValueAt(row, 4)));
jtf6 = new JTextField(10);
jtf6.setText((String)(stModel.getValueAt(row, 5)));
//添加到第二个面板中
panel2 = new Panel(new GridLayout(6, 1));
panel2.add(jtf1);
panel2.add(jtf2);
panel2.add(jtf3);
panel2.add(jtf4);
panel2.add(jtf5);
panel2.add(jtf6);
//窗体南部的组件
update = new JButton("修改");
canel = new JButton("取消");
panel3 = new Panel();
panel3.add(update);
panel3.add(canel);
//注册事件监听
update.addActionListener(this);
canel.addActionListener(this);
//添加组件到窗体中
this.add(panel1, BorderLayout.WEST);
this.add(panel2, BorderLayout.CENTER);
this.add(panel3, BorderLayout.SOUTH);
//设置窗体属性
this.setSize(300, 200);
//设置窗体为可见
this.setVisible(true);
}
//响应用户操作
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == update)
{
String sql = "update st set stNname=?, st***=?,stAge=?,stBorn=?,stDept=? where stId=?";
String[] paras = {jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText(),jtf1.getText()};
//建立st表的模型
StuModel stuModel = new StuModel();
if(!stuModel.updateDatebase(sql, paras))
{
JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
}
else
{
//关闭对话框
this.dispose();
}
}
else if(e.getSource() == canel)
{
//关闭对话框
this.dispose();
}
}
}
================================================================================
并修改。