【Java开源代码栏目提醒】:网学会员鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“unionQueryFrame.java”一文,供大家参考学习
package unionquery;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
/**
* Title: 使用联合查询进行数据库操作
* Description: 教学示范
* Copyright: Copyright (c) 2003
* Company: 北京师范大学
计算机系
* @author 孙一林
* @version 1.0
*/
public class unionQueryFrame extends JFrame {
private JPanel contentPane;
private Button queryButton = new Button();
Connection connection = null; //定义与数据库进行连接的Connection对象
ResultSet rs = null; //定义数据库查询的结果集
Statement statement = null; //定义查询数据库的Statement对象
boolean lastQuery = false; //上次查询是否成功
Vector vector; //定义存储结果集数据的数组
String[] title = {"", "", "年龄", "性别", "系名", "电话", "Email地址"}; //定义显示数据表格的标题
AbstractTableModel tm; //定义显示数据表格的抽象类
JScrollPane scroll; //定义装载数据表格的容器
public unionQueryFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception { //初始化用户界面
contentPane = (JPanel) this.getContentPane();
queryButton.setLabel("联合查询");
queryButton.setBounds(new Rectangle(276, 249, 109, 35));
queryButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
queryButton_actionPerformed(e);
}
});
contentPane.setLayout(null);
this.setSize(new Dimension(660, 335));
this.setTitle("多个表的联合查询");
contentPane.add(queryButton, null);
}
void initTable() { //初始化显示数据集结果的表格
JTable table;
vector = new Vector();
tm = new AbstractTableModel() { //实现表格抽象类的接口
public int getColumnCount() {
return title.length;
}
public int getRowCount() {
return vector.size();
}
public Object getValueAt(int row, int column) {
if(!vector.isEmpty())
{
return ((Vector)vector.elementAt(row)).elementAt(column);
}
else
{
return null;
}
}
public void setValueAt(Object value, int row, int column)
{
}
public String getColumnName(int column)
{
return title[column];
}
public Class getColumnClass(int c)
{
return getValueAt(0,c).getClass();
}
public boolean isCellEditable(int row, int column)
{
return false;
}
};
table = new JTable(tm);
table.setToolTipText("Display Query Result");
table.setAutoResizeMode(table.AUTO_RESIZE_ALL_COLUMNS);
table.setCellSelectionEnabled(false);
table.setShowHorizontalLines(true);
table.setShowVerticalLines(true);
scroll = new JScrollPane(table);
scroll.setBounds(new Rectangle(21, 10, 619, 200));
contentPane.add(scroll,null);
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void queryButton_actionPerformed(ActionEvent e) { //对数据库进行联合
查询操作并显示查询结果
if(lastQuery) //若上次查询成功,则首先清除上次查询的表格
{
scroll.setVisible(false);
contentPane.remove(scroll);
}
initTable(); //初始化新的表格
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //指定与数据库连接使用JDBC-ODBC桥驱动
程序 String url = "jdbc:odbc:student"; //指定数据源名
connection = DriverManager.getConnection(url); //与数据源建立连接
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //创建Statement接口实例
String
sql = "select studentbase., studentbase., studentbase.年龄," +
"studentbase.性别, studentbase.系名, studentaddress.电话," +
"studentaddress.Email地址" +
" from studentbase, studentaddress" +
" where studentbase.= studentaddress."; //创建联合查询的SQL语句
rs = statement.executeQuery(sql); //将数据存入结果集中
vector.removeAllElements();
tm.fireTableStructureChanged(); //刷新表格显示结果集中的数据
while(rs.next())
{
Vector rec_vector = new Vector();
rec_vector.addElement(String.valueOf(rs.getInt("")));
rec_vector.addElement(rs.getString(""));
rec_vector.addElement(String.valueOf(rs.getInt("年龄")));
rec_vector.addElement(String.valueOf(rs.getString("性别")));
rec_vector.addElement(String.valueOf(rs.getString("系名")));
rec_vector.addElement(String.valueOf(rs.getString("电话")));
rec_vector.addElement(String.valueOf