⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 query.java

📁 这是我我完成的java的课程设计,是一个宾馆管理系统
💻 JAVA
字号:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
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.table.DefaultTableModel;

import sun.awt.image.ToolkitImage;


public class Query  
{
	public	String sql=null;
	JFrame f=null;
	JTable table;//声明一个表格对象
	DefaultTableModel dtm;//声明一个表格模型的对象
	JScrollPane p1;//声明一个滚动面板对象
	JButton b1=new JButton("首页");
	JButton b2=new JButton("上页");
	JButton b3=new JButton("下页");
	JButton b4=new JButton("尾页");
	JLabel bb=new JLabel("         ");
	int pagesize=4;//表格大小为4行,为一页
	int pagecount=0;//初始化页码数
	int page=1;
	JPanel tablePane;//声明一个容器对象
	JPanel p2;
	int count=0;
	Vector title =new Vector();//构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
	Statement st;
	ResultSet rs;
	Connection conn;

	
	public JPanel getTablePane(String sql)//定义一个容器的成员方法,创建一个容器
	{
		tablePane=new JPanel();//给容器分配空间
		p2=new JPanel();
		//数据库的连接
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			conn=DriverManager.getConnection("jdbc:odbc:Hotel");
			st = conn.createStatement(
				ResultSet.TYPE_SCROLL_INSENSITIVE,
				ResultSet.CONCUR_UPDATABLE);		
		} catch (SQLException e2) {
			e2.printStackTrace();
		} catch (ClassNotFoundException e) 
		{
			e.printStackTrace();
		}
		try {
			rs=st.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		try 
		{
			count=getCount();//结果集个数
			pagecount=(int)count/pagesize+(count%pagesize==0?0:1);//计算页数
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		ResultSetMetaData dbmd = null;//创建一个对象并初始化,可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。
		try {
			dbmd = rs.getMetaData();// 获取此 ResultSet 对象的列的编号、类型和属性
		} catch (SQLException e1) 
		{
			e1.printStackTrace();
		}
		try {
			for(int i=1;i<=dbmd.getColumnCount();i++)
			{				
				title.addElement(dbmd.getColumnName(i));//把结果中的列名全部加入到对象数组中
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		dtm=new DefaultTableModel(null,title);//构造一个 DefaultTableModel,数据为空, 列数组为title
		dtm.setRowCount(4);//设置模型中的行数。
		table=new JTable(dtm);
		initTable();//调用初始化表格的成员方法
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		p1=new JScrollPane(table);//把表格加到滚动面板中去
		p1.setAutoscrolls(true);//自动滚动
		if(pagecount!=0)
			bb.setText("第"+page+"页");
		p2.add(b1);p2.add(b2);p2.add(b3);p2.add(b4);p2.add(bb);
		tablePane.setLayout(new BorderLayout());//布局
		tablePane.add(p1,"Center");
		tablePane.add(p2,"South");
		tablePane.setSize(200, 150);
		//实现首页按钮的监听
		b1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				String title="Message Dialog";
				if(page==1){
					int type=JOptionPane.WARNING_MESSAGE;
					String message="已经是首页!";
					JOptionPane.showMessageDialog(f,message,title,type);
				}
					page=1;
				initTable();//调用初始化表格的成员方法
				bb.setText("<html>第<font color=blue>"+page+"</font>页</html>");
			}});
		//实现上页按钮的监听
		b2.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					if(page==1){
						String  message="已经是首页!";
						int type=JOptionPane.WARNING_MESSAGE;
						JOptionPane.showMessageDialog(f,message);
					}
						if(page>1)
							page=page-1;
					initTable();
					bb.setText("<html>第<font color=blue>"+page+"</font>页</html>");
				}});
		//实现下页按钮的监听
		b3.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e) {					
						if(page==pagecount){
							String  message="已经是尾页!";
							int type=JOptionPane.WARNING_MESSAGE;
							JOptionPane.showMessageDialog(f,message);
						}
						if(page<pagecount)
								page=page+1;
						initTable();
						bb.setText("<html>第<font color=blue>"+page+"</font>页</html>");
					}});
		//实现尾页按钮的监听
		b4.addActionListener(new ActionListener(){
						public void actionPerformed(ActionEvent e) {
							if(page==pagecount){
								String  message="已经是尾页!";
								int type=JOptionPane.WARNING_MESSAGE;
								JOptionPane.showMessageDialog(f,message);
							}
							page=pagecount;
							initTable();
							bb.setText("<html>第<font color=blue>"+page+"</font>页</html>");
						}});		
						
       return tablePane;
	}
/********************************初始化当前页面表格的成员方法*********************************/
	private void initTable() 
	{
		dtm.setRowCount(0);//设置表格为0行
		try {
			rs.beforeFirst();//移动记录移到第一个记录之前
			for(int i=1;i<1+pagesize*(page-1);i++)//把记录指针移到该页面
				rs.next();
			int j=0;	
			while(j<pagesize && rs.next())
			{
				j++;
				Vector v1=new Vector();
				for(int i=1;i<=title.size();i++)
					v1.addElement(rs.getString(i));
				dtm.addRow(v1);//把结果一行一行的加入到表格中去
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
/******************************计算并返回结果集的个数*************************/
	private int getCount() throws SQLException {
		int n=0;
		try {
			if(rs.last()){
				n=rs.getRow();
				rs.beforeFirst();
				return n;
			}
			else
				return 0;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 0;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -