import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class jtable_shujuku extends JFrame {
JLabel lb1,lb2,lb3;
JTextField tf1,tf2,tf3;
JButton bt1,bt2,bt3,bt4;
JPanel pl;
//
JTable table;
DefaultTableModel dtm;
//
Connection con;
PreparedStatement pstm;
//构造函数
public jtable_shujuku()
{ //创建界面
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
lb1=new JLabel("学号");
lb2=new JLabel("名字");
lb3=new JLabel("年龄");
tf1=new JTextField();
tf2=new JTextField();
tf3=new JTextField();
bt1=new JButton("添加");
bt2=new JButton("删除");
bt3=new JButton("修改");
bt4=new JButton("查询");
lb1.setBounds(100,60,80,30);
lb2.setBounds(100,100,80,30);
lb3.setBounds(100,140,80,30);
tf1.setBounds(170,60,120,30);
tf2.setBounds(170,100,120,30);
tf3.setBounds(170,140,120,30);
add(lb1);
add(lb2);
add(lb3);
add(tf1);
add(tf2);
add(tf3);
pl=new JPanel();
pl.setLayout(new FlowLayout());
pl.add(bt1);
pl.add(bt2);
pl.add(bt3);
pl.add(bt4);
pl.setBounds(55, 200, 300,40);
add(pl);
//加入Jtable表格
String[] column_name={"学号","名字","年龄"};
Object[][] rows={};
dtm=newDefaultTableModel(rows,column_name);
table=new JTable(dtm);
JScrollPane sp=new JScrollPane(table);
sp.setBounds(80,280,300,170);
add(sp);
rechaxun(); //查询方法
//添加按钮事件
bt1.addActionListener(new ActionListener() {
public voidactionPerformed(ActionEvent e) {
// -------完善添加的信息(id,name,age)----
String tf1_id=tf1.getText();
String tf2_name=tf2.getText();
String tf3_age=tf3.getText();
if(tf1_id.length()==0){//判断学号是否为空
JOptionPane.showMessageDialog(null,"请输入学号");
return;
}
if(tf2_name.length()==0){//判断姓名是否为空
JOptionPane.showMessageDialog(null,"请输入姓名");
return;
}
//判断输入是数字,即也是同时判断输入是否为空
try {
Integer.parseInt(tf3_age);//àààààààààààààààààààààà tf3_age定义的是字符串类型
} catch (NumberFormatExceptione2) {
JOptionPane.showMessageDialog(null,"年龄为数字");
return;
}
//--------连接数据库-----添加jtable数据
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); //建立~桥接器
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","ora");//连接到数据库
String sql="insert intostudent(id,name,age) values (?,?,?)";
pstm=con.prepareStatement(sql);
pstm.setInt(1, Integer.parseInt(tf1_id));
pstm.setString(2, tf2_name);
pstm.setInt(3, Integer.parseInt(tf3_age));
//
int i=pstm.executeUpdate();
if(i>0){
JOptionPane.showMessageDialog(null, "添加成功");
rechaxun();
}else{
JOptionPane.showMessageDialog(null, "添加失败");
}
} catch (ClassNotFoundExceptione1) {
// TODOAuto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODOAuto-generated catch block
e1.printStackTrace();
}
rechaxun();
}
});
//删除按钮事件
bt2.addActionListener(new ActionListener() {
public voidactionPerformed(ActionEvent e) {
int select_row=table.getSelectedRow();
int id=(Integer)table.getValueAt(select_row,0);//获得选中行的学号
int selectRow=table.getSelectedRow();
if(selectRow<0){
JOptionPane.showMessageDialog(null, "请选择要删除的行");
return;
}
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","ora");
String sql="delete fromstudent where id=?";
pstm=con.prepareStatement(sql);
pstm.setInt(1, id);
int i=pstm.executeUpdate();
if(i>0){
JOptionPane.showMessageDialog(null, "删除成功");
}else{
JOptionPane.showMessageDialog(null, "删除失败");
}
} catch (Exception ee) {
ee.printStackTrace();
}finally{
try {
if(pstm!=null) pstm.close();
if(con!=null) con.close();
} catch (SQLException eee) {
eee.printStackTrace();
}
}
rechaxun();
}
});
//修改按钮事件
bt3.addActionListener(new ActionListener() {
public voidactionPerformed(ActionEvent e) {
int selectRow=table.getSelectedRow();
if(selectRow<0){
JOptionPane.showMessageDialog(null, "请选择要修改的行");
return;
}
Tool2.tool2=table;
new shujuku_dialog();
}
});
//查询按钮事件
bt4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvente) {
rechaxun();
}
});
setSize(430,630);
setVisible(true);
}
//循环数据
public void rechaxun()
{
//清空表中的数据
int rowNum=dtm.getRowCount();
for(int i=0;i<rowNum;i++){
dtm.removeRow(0);
}
ResultSet rs=null; // ResultSet 处理查询结果,它的对象一次只能看到一个数据行,使用next()方法走到下一行数据
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","ora");
String sql="selectid,name,age from student";
pstm=con.prepareStatement(sql);
rs=pstm.executeQuery();
//处理结果集
while(rs.next()){
int id=rs.getInt("id");
Stringname=rs.getString("name");
int age=rs.getInt("age");
Object[]row={id,name,age};
dtm.addRow(row);
}
} catch (Exception e5) {
e5.printStackTrace();
}finally{
try {
if(rs!=null) rs.close();
if(pstm!=null) pstm.close();
if(con!=null) con.close();
} catch (SQLException e8) {
e8.printStackTrace();
}
}
}
public static void main(String[] args) {
new jtable_shujuku();
}
}