📄 query.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 + -