可更新ResultSet的簡單應用

package search;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class ResultDemo extends JFrame implements ActionListener
{
	private Connection conn;
	private Statement st;
	private ResultSet rs;
	private JLabel rowLabel=new JLabel();
	private JTextField idTxtFid=new JTextField();
	private JTextField nameTxtFid=new JTextField();
	private JTextField ageTxtFid=new JTextField();
	private JTextField addressTxtFid=new JTextField();
	private JLabel idLabel=new JLabel("id");
	private JLabel nameLabel=new JLabel("name");
	private JLabel ageLabel=new JLabel("age");
	private JLabel addressLabel=new JLabel("address");
	
	private JButton firstBt=new JButton("first");
	private JButton previousBt=new JButton("previous");
	private JButton nextBt=new JButton("next");
	private JButton lastBt=new JButton("last");
	private JButton insertBt=new JButton("insert");
	private JButton deleteBt=new JButton("delete");
	private JButton updateBt=new JButton("update");
	
	private JPanel headPanel=new JPanel();
	private JPanel centerPanel=new JPanel();
	private JPanel bottomPanel=new JPanel();

	public ResultDemo()
	{
		super("ResultDemo");
		Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize();
		Container container=getContentPane();
		setLayout(new BorderLayout());
		
		try 
		{
			
			conn=new ConnectionProvider().getConnection();
			st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			rs=st.executeQuery("select*from customers");
			buildDisplay();
			setLocation((scrSize.width-getSize().width)/2,(scrSize.height-getSize().height)/2);
		}
		catch (SQLException e) {
			
			e.printStackTrace();
		}
	}
	private void buildDisplay()
	{
		firstBt.addActionListener(this);
		previousBt.addActionListener(this);
		nextBt.addActionListener(this);
		lastBt.addActionListener(this);
		insertBt.addActionListener(this);
		deleteBt.addActionListener(this);
		updateBt.addActionListener(this);
		Container contentPane=getContentPane();
		headPanel.add(rowLabel);
		centerPanel.setLayout(new GridLayout(4,2,2,2));
		centerPanel.add(idLabel);
		centerPanel.add(idTxtFid);
		idTxtFid.setEditable(false);
		centerPanel.add(nameLabel);
		centerPanel.add(nameTxtFid);
		centerPanel.add(ageLabel);
		centerPanel.add(ageTxtFid);
		centerPanel.add(addressLabel);
		centerPanel.add(addressTxtFid);
		bottomPanel.add(firstBt);
		bottomPanel.add(previousBt);
		bottomPanel.add(nextBt);
		bottomPanel.add(lastBt);
		bottomPanel.add(insertBt);
		bottomPanel.add(updateBt);
		bottomPanel.add(deleteBt);
		
		contentPane.add(headPanel,BorderLayout.NORTH);
		contentPane.add(centerPanel,BorderLayout.CENTER);
		contentPane.add(bottomPanel,BorderLayout.SOUTH);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				try 
				{
					conn.close();
					System.exit(0);
				} 
				catch (SQLException e1) 
				{
					e1.printStackTrace();
				}
			}
		});
		pack();
		
	}
	
	public void actionPerformed(ActionEvent e)
	{
		JButton b=(JButton) e.getSource();
		try
		{
			if(b.getText().equals("first"))
			{
				rs.first();
			}else if(b.getText().equals("last"))
			{
				rs.last();
			}
			else if(b.getText().equals("previous"))
			{
				if(rs.isFirst())
					return;
				else
					rs.previous();
			}
			else if(b.getText().equals("next"))
			{
				if(rs.isLast())
					return;
				else
					rs.next();
			}
			else if(b.getText().equals("update"))
			{
				System.out.println(nameTxtFid.getText().trim());
				rs.updateString("name",nameTxtFid.getText().trim());
				rs.updateInt("age",Integer.parseInt(ageTxtFid.getText()));
				rs.updateString("address",addressTxtFid.getText());
				rs.updateRow();
			}
			else if(b.getText().equals("delete"))
			{
			rs.deleteRow();
			rs.first();
			}
		
			else if(b.getText().equals("insert"))
			{
			rs.moveToInsertRow();
			rs.updateString("name",nameTxtFid.getText());
			rs.updateInt("age",Integer.parseInt(ageTxtFid.getText()));
			rs.updateString("address",addressTxtFid.getText());
			rs.insertRow();
			rs.moveToCurrentRow();//遊標移動到插入前
			}
			refresh();//刷新界面數據
		}catch(SQLException ex)
		{
			
		}
	}
	private void refresh() throws SQLException
	{
		int row=rs.getRow();
		rowLabel.setText("顯示第"+row+"條記錄");
		if(row==0)
		{
			idTxtFid.setText("");
			nameTxtFid.setText("");
			ageTxtFid.setText("");
			addressTxtFid.setText("");
		}
		else
		{
			idTxtFid.setText(rs.getString(1));
			nameTxtFid.setText(rs.getString(2));
			ageTxtFid.setText(rs.getString(3));
			addressTxtFid.setText(rs.getString(4));
		}
	}
	public static void main(String[]args)
	{
		ResultDemo rd=new ResultDemo();
		rd.setVisible(true);
	}
}

效果圖


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章