package com.student;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;
public class StuManage extends JFrame implements ActionListener{
/**
* @param args
*/
JFrame jf = new JFrame();
//定义一些控件
JPanel jp1, jp2;
JLabel jl1;
JButton jb1,jb2,jb3,jb4;
JTable jt;
JScrollPane jsp;
JTextField jtf;
Font ft = new Font("Serif",Font.BOLD,28);
public StuManage() throws Exception
{
jp1 = new JPanel();
jl1 = new JLabel();
jl1 = new JLabel("请输入名字");
jtf = new JTextField(10);
jb1 = new JButton("查询");
jb1.addActionListener(this);
//jb1.setActionCommand(arg0);
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);
jf.add("North",jp1);
jp2 = new JPanel();
jb2 = new JButton("添加");
jb3 = new JButton("修改");
jb4 = new JButton("删除");
jp2.add(jb2);
StuModel sm = new StuModel();
jt = new JTable(sm);
jsp = new JScrollPane(jt);
jf.add(jsp);
jf.setVisible(true);
jf.setSize(400,400);
jp2.add(jb3);
jp2.add(jb4);
jf.add("South",jp2);
}
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
StuManage sm = new StuManage();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//判断是哪个按钮被选中
if(arg0.getSource() == jb1)//按钮按下
//此方法要求按钮与响应方法在同一个类
{
String Name = jtf.getText().trim();
String sql = "select* from user where name = '"+ Name+"'";
StuModel sml = null;
try {
sml = new StuModel(sql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jt.setModel(sml);
}
}
}
package com.student;
import javax.swing.table.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;
public class StuModel extends AbstractTableModel{
/**
* @param args
*/
// 定义MySQL的数据库驱动程序;
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
// 定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/myData" ;
// MySQL数据库的连接用户名
public static final String DBUSER = "root" ;
// MySQL数据库的连接密码
public static final String DBPASS = "mysqladmin" ;
Vector rowData,columnName;
public StuModel() throws Exception
{
Connection conn = null ; // 数据库连接
ResultSet rs = null ; // 保存查询结果
PreparedStatement ps;
Class.forName(DBDRIVER) ; // 加载驱动程序
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
ps = conn.prepareStatement("select *from user");
rs = ps.executeQuery() ;
//表格操作
//将数据导入界面
columnName = new Vector();
rowData = new Vector();
columnName.add("学号");
columnName.add("姓名");
columnName.add("年龄");
columnName.add("性别");
columnName.add("成绩");
rowData = new Vector();
while(rs.next())
{
//错误笔记:把hang定义放在while外头不对
//原因是那样只创建了一个行对象,只能存放第一行,所以每次执行都输出第一行的数据
Vector hang = new Vector();
hang.add(rs.getString(1));
hang.add(rs.getString(2));
hang.add(rs.getInt(4));
hang.add(rs.getString(5));
hang.add(rs.getInt(3));
rowData.add(hang);
}
//关闭数据库
if(rs!=null)
{
rs.close() ;
}
if(ps!=null)
{
ps.close() ;
}
if(conn!=null)
{
conn.close() ;
}
}
public StuModel(String sql) throws Exception
{
//数据库操作
Connection conn = null ; // 数据库连接
Statement stmt = null ; // 数据库的操作对象
ResultSet rs = null ; // 保存查询结果
Class.forName(DBDRIVER) ; // 加载驱动程序
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ;
rs = stmt.executeQuery(sql) ;
//表格操作
//将数据导入界面
columnName = new Vector();
rowData = new Vector();
columnName.add("学号");
columnName.add("姓名");
columnName.add("年龄");
columnName.add("性别");
columnName.add("成绩");
rowData = new Vector();
while(rs.next())
{
//错误笔记:把hang定义放在while外头不对
//原因是那样只创建了一个行对象,只能存放第一行,所以每次执行都输出第一行的数据
Vector hang = new Vector();
hang.add(rs.getString("id"));
hang.add(rs.getString("name"));
hang.add(rs.getInt("age"));
hang.add(rs.getString("sex"));
hang.add(rs.getInt("Grade"));
rowData.add(hang);
}
//关闭数据库
if(rs!=null)
{
rs.close() ;
}
if(stmt!=null)
{
stmt.close() ;
}
if(conn!=null)
{
conn.close() ;
}
}
@Override
public String getColumnName(int arg0) {
// TODO Auto-generated method stub
return (String)this.columnName.get(arg0);
}
//得到列的数目
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return this.columnName.size();
}
//得到行的数目
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return this.rowData.size();
}
//得到某行某列的数据
@Override
public Object getValueAt(int row, int column) {
// TODO Auto-generated method stub
return ((Vector)this.rowData.get(row)).get(column);
}
}