JDBC: 数据库基本操作演示程序

  /** @author:毛毛

JDBC中操作数据库的一些基本操作演示程序。GUI设计界面是随意的。

这里数据库是Access表,数据库名:Data,  表名:Student。

package AccessSQL;

import java.awt.*;
import java.sql.*;
import java.awt.event.*;

import javax.swing.*;

/*
 * 数据库操作,插入,删除,查询等
 */
public class ModifyDisplay extends JFrame
  implements ActionListener{

//定义各个组件

 JLabel lbRow = new JLabel("行数");
 JTextField tfRow = new JTextField();
 
 JLabel lbID = new JLabel("学号");
 JLabel lbName = new JLabel("姓名");
 JLabel lbAge = new JLabel("年龄");
 JLabel lbPro = new JLabel("专业");
 
 JTextField tfID = new JTextField();
 JTextField tfName = new JTextField();
 JTextField tfAge = new JTextField();
 JTextField tfPro = new JTextField();
 
 JButton btnFind = new JButton("查 询");
 JButton btnDel = new JButton("删 除");
 JButton btnAll = new JButton("全 部");
 JButton btnInsert = new JButton("插 入");
 
 JLabel lPro = new JLabel("专业");
 JTextField tPro = new JTextField();
 JButton btnFind2 = new JButton("按专业查询");
 
 JPanel panel = new JPanel();
 JTextArea taInfo = new JTextArea();
 private Container contrainer = getContentPane();
 
 public ModifyDisplay()
 {
  super("学生信息查询");
  setSize(400, 300);
  this.setBounds(100, 100, 500, 600);
 }

//设置容器面板的布局
 public void setLayout()
 {  
  
  panel.setLayout(null);
  
   //在面板panel中相对panel, 其中lbRow:left=0 top=10 width=30 height=25
  lbRow.setBounds(0, 10, 30, 25);
  tfRow.setBounds(40, 10, 70, 25);
  btnFind.setBounds(130, 10, 70, 25);
  btnDel.setBounds(210, 10, 70, 25);
  btnAll.setBounds(290, 10, 70, 25);  
  
  lbID.setBounds(10, 50, 60, 25);
  lbName.setBounds(75, 50, 60, 25);
  lbAge.setBounds(140, 50, 60, 25);
  lbPro.setBounds(210, 50, 60, 25);
  
  tfID.setBounds(0, 80, 60, 25);
  tfName.setBounds(65, 80, 60, 25);
  tfAge.setBounds(130, 80, 60, 25);
  tfPro.setBounds(200, 80, 60, 25);
  btnInsert.setBounds(275, 80, 70, 25);
  
  lPro.setBounds(0, 120, 30, 25);
  tPro.setBounds(40, 120, 90, 25);
  btnFind2.setBounds(160, 120, 100, 25);
    
  panel.add(lbRow);
  panel.add(tfRow);
  panel.add(btnFind);
  panel.add(btnDel);
  panel.add(btnAll);
  
  panel.add(lbID);
  panel.add(lbName);
  panel.add(lbAge);
  panel.add(lbPro);
  
  panel.add(tfID);
  panel.add(tfName);
  panel.add(tfAge);
  panel.add(tfPro);
  panel.add(btnInsert);
  
  panel.add(lPro);
  panel.add(tPro);
  panel.add(btnFind2);

  //注册监听器
  btnFind.addActionListener(this);
  btnDel.addActionListener(this); 
  btnAll.addActionListener(this);
  btnInsert.addActionListener(this);
  btnFind2.addActionListener(this);
  
  getContentPane().setLayout(null);
  
  //panel: left=20 top=10 width=370 height=110
  panel.setBounds(20, 10, 370, 150);
  taInfo.setBounds(20, 160, 370, 380);
  
  getContentPane().add(panel);
  getContentPane().add(taInfo);
  
 }
 
 public void GetRecord(int Row, int type, String ID, String Name,
   String Age, String Pro) throws SQLException{
  
  String URL,SQL;
  Connection con = null;
  try
  {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  }
  catch(ClassNotFoundException ex)
  {
      taInfo.setText(ex.getMessage());
      System.out.println(-1);
  }
  
  try{

  //连接数据库, 向数据库发送执行请求
   URL = "jdbc:odbc:Data";
   con = DriverManager.getConnection(URL);
   Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
   SQL = "SELECT ID,姓名,age,专业 FROM Student";
   ResultSet rs = stmt.executeQuery(SQL);
   
   taInfo.setText("");
   taInfo.append("学号/t姓名/t年龄/t专业/n/n");
   if(type == 0)  //全部查询
   {
    rs.beforeFirst();     
    while(rs.next())
    {     
     taInfo.append(rs.getInt("ID") + "/t");
     taInfo.append(rs.getString("姓名") + "/t");
     taInfo.append(rs.getInt("age") + "/t");
     taInfo.append(rs.getString("专业") + "/n");                    
    }  
   }   
   else if(type == 1) //按行查询
   {
    rs.absolute(Row);        
    taInfo.append(rs.getInt("ID") + "/t");
    taInfo.append(rs.getString("姓名") + "/t");
    taInfo.append(rs.getInt("age") + "/t");
    taInfo.append(rs.getString("专业") + "/n");        
   }
   else if(type == 2)  //删除
    
   {   
       rs.absolute(Row);
       rs.deleteRow();
       rs.updateRow(); 
    
    rs.beforeFirst();      
    while(rs.next())
    {     
     taInfo.append(rs.getInt("ID") + "/t");
     taInfo.append(rs.getString("姓名") + "/t");
     taInfo.append(rs.getInt("age") + "/t");
     taInfo.append(rs.getString("专业") + "/n");
    }  
   } 
   else if(type == 3)  //插入
   {
       rs.last();                           
       rs.moveToInsertRow();      
       int id = Integer.parseInt(ID);
       int age = Integer.parseInt(Age); 
    
    rs.updateInt("ID", id);      
    rs.updateString("姓名", Name);
    rs.updateInt("age", age);
    rs.updateString("专业", Pro);   
    
    rs.insertRow();
    rs.updateRow();  
    
    rs.beforeFirst();        
    while(rs.next())
    {     
     taInfo.append(rs.getInt("ID") + "/t");
     taInfo.append(rs.getString("姓名") + "/t");
     taInfo.append(rs.getInt("age") + "/t");
     taInfo.append(rs.getString("专业") + "/n");    
    }       
   }
   else if(type == 4) //按专业查询
   {
    String sql = "SELECT ID,姓名,age,专业 FROM Student"+" WHERE 专业=?";
    PreparedStatement preSt = con.prepareStatement(sql);
    preSt.setString(1,Pro);
    ResultSet rs1 = preSt.executeQuery();   
                
    while(rs1.next())
    {     
     taInfo.append(rs1.getInt("ID") + "/t");
     taInfo.append(rs1.getString("姓名") + "/t");
     taInfo.append(rs1.getInt("age") + "/t");
     taInfo.append(rs1.getString("专业") + "/n");    
    } 
    
    rs1.close();
    preSt.close();
   }
   contrainer.add(taInfo); 
   
   rs.close();
   stmt.close();     
  }
   catch(SQLException ex){
    taInfo.setText(ex.getMessage());
   }
   finally{
    con.close();
   }  
 }
 
 public static void main(String[] args) {
  
  ModifyDisplay frame = new ModifyDisplay();
  frame.setLayout();
  frame.show();

 }
 
 @Override // 按钮事件处理
 public void actionPerformed(ActionEvent e) {
  
  /*
   *  type值含义
   *  0:全部查询 , 1:按行查询 , 2:按行删除 , 3:按行插入, 4:按专业查询
  */
  if(e.getSource() == btnAll)
  {
   int type = 0;
   try{
    GetRecord(0, type, null,null,null,null);
   
   }catch(SQLException ex){
    
    taInfo.setText(ex.getMessage());
    taInfo.setForeground(Color.red);
   }
  }
  else if(e.getSource() == btnFind)
  {   
   int type;
   String strRow = tfRow.getText();
   char ch;
   boolean flag = false;
   
   //判断输入的数据是否全是数字
   for(int i=0; i<strRow.length(); i++)
   {
    ch = strRow.charAt(i);
    if(Character.isDigit(ch))
     flag = true;
    else
    {
     flag = false;
        break;
    }
   }
   
   if(flag)
   {
       type = 1;
    int intRow = Integer.parseInt(strRow);   
   
    try{
     GetRecord(intRow,type,null, null,null,null);
    }
    catch(SQLException ex){
     taInfo.setText(ex.getMessage());
    }
   }
   else
   {
    taInfo.setText("Please only input number!");
    taInfo.setForeground(Color.red);
   }
  
  }
  else if(e.getSource() == btnDel)
  {   
   int type;
   String strRow = tfRow.getText();
   char ch;
   boolean flag = false;
   
   //判断输入的数据是否全是数字
   for(int i=0; i<strRow.length(); i++)
   {
    ch = strRow.charAt(i);
    if(Character.isDigit(ch))
     flag = true;
    else
    {
     flag = false;
        break;
    }
   }
   
   if(flag)
   {
       type = 2;
    int intRow = Integer.parseInt(strRow);
   
    try{
     GetRecord(intRow,type,null,null,null,null);
    }
    catch(SQLException ex){
     
     taInfo.setText(ex.getMessage());
     taInfo.setForeground(Color.red);
    }
   }
   else
   {
    taInfo.setText("Please only input number!");
    taInfo.setForeground(Color.red);
   }
  
  }
  else if(e.getSource() == btnInsert)
  {   
   String strID = tfID.getText();
   String strName = tfName.getText();
   String strAge = tfAge.getText();
   String strPro = tfPro.getText();
   
   int type = 3;
   char ch1,ch2;
   boolean flag1=false, flag2=false;
   
   for(int i=0; i<strID.length(); i++)
   {
    ch1 = strID.charAt(i);
    if(Character.isDigit(ch1))
     flag1 = true;
    else
    {
     flag1 = false;
        break;
    }
   }
   for(int i=0; i<strAge.length(); i++)
   {
    ch2 = strAge.charAt(i);
    if(Character.isDigit(ch2))
     flag2 = true;
    else
    {
     flag2 = false;
        break;
    }
   }  
   if(flag1&&flag2)
   {        
    try{     
     GetRecord(0,type,strID,strName,strAge,strPro);
    }
    catch(SQLException ex){
     taInfo.setText(ex.getMessage());
     taInfo.setForeground(Color.red);
    }
   }
   else
   {
    taInfo.setText("Please input right(correct) student's information!");
    taInfo.setForeground(Color.red);
   }
   
  }
  else if(e.getSource() == btnFind2)
  {
   int type = 4;
   String strPro = tPro.getText();
   
   try{
    GetRecord(0, type, null,null,null,strPro);
   
   }catch(SQLException ex){ 
    taInfo.setText(ex.getMessage());
    taInfo.setForeground(Color.red);
   }
  }  
 }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值