package lib;
/*
* 查询数据库,通过传递进来的SQL查询语句从数据库中检索信息,并以相应格式显示
*/
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import view.QueryDBView;
public class QueryDBBean
{
static AbstractTableModel tm;
static JTable jg_table;
static Vector vect;
static JScrollPane jsp;
static String[] title = {"职工号","职工名","性别"};
static ResultSet rs;
//按照用户指定查询条件返回相应结果,并将结果显示给用户
public static void action(String sql)
{
DBConnector dbc = new DBConnector();
dbc.getConnection();
rs = dbc.executeQuery(sql);
init();
show();
dbc.close();
}
//把从数据库中获取的数据显示出来
static void show()
{
tm.fireTableStructureChanged();
try
{
while(rs.next())
{
Vector rec_vector = new Vector();
rec_vector.addElement(rs.getString(1));
rec_vector.addElement(rs.getString(2));
rec_vector.addElement(rs.getString(3));
vect.addElement(rec_vector);
}
tm.fireTableStructureChanged(); //更新表格,显示向量vect的内容
}catch(Exception e){e.printStackTrace();}
buildFrame();
}
static void init()
{
vect = new Vector();
vect.removeAllElements();
//实现抽象类AbstractTableModel对象tm中的方法
tm = new AbstractTableModel(){
public int getColumnCount(){
return title.length;
}
public int getRowCount(){
return vect.size();
}
public Object getValueAt(int row,int column){
if(!vect.isEmpty())
return ((Vector)vect.elementAt(row)).elementAt(column);
else
return null;
}
public String getColumnName(int column){
return title[column];
}
public void setValueAt(Object value,int row,int column){}
public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}
public boolean isCellEditable(int row,int column){
return true;
}
};
//定制表格
jg_table = new JTable(tm);
jg_table.setToolTipText("显示全部查询结果");
jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//设置表格调整尺寸模式
jg_table.setCellSelectionEnabled(true); //设置单元格现在方式
jg_table.setShowVerticalLines(true); //设置是否显示单元格间的分隔线
jg_table.setShowHorizontalLines(true);
jsp = new JScrollPane(jg_table);
}
static void buildFrame()
{
JFrame jFrame = new JFrame("结果");
jFrame.getContentPane().add(jsp);
jFrame.setSize(600,400);
jFrame.show();
}
}