表达能力不好,只能笼统地说是J2SE连接数据库的问题 麻烦大家帮我解决一下 谢谢

wilpharma 2010-11-08 10:45:58


第一个问题如上图 如何让那几个“宿舍号”那一行自动适应那个表框?
第二个问题:如何让每一次按确定之后 把上一次出现的内容清空?谢谢............小弟在这里感谢大家了
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilpharma 2010-11-08
  • 打赏
  • 举报
回复
import java.awt.*;
import java.sql.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;

import javax.swing.*;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class dormitory_Inquire extends JFrame implements ActionListener{
Vector rowVectors=new Vector();;
Vector columnHeaderVector=new Vector();
JButton b1,b2;
JTextField txt;
JComboBox box;
JTable table;
JScrollPane p1 = new JScrollPane();
boolean flag = false;
String s_id;
int astu_id;
DefaultTableModel tableModel=new DefaultTableModel ( );
dormitory_Inquire f;
ResultSet r;
Connection conn;
Statement stm;

//构造方法
dormitory_Inquire()
{ super("宿舍查询");
setLayout(null);
setSize(1080,540);
setResizable(false);
setVisible(true);

txt = new JTextField(50);
add(txt);
txt.setBounds(320, 20, 250, 25);
box = new JComboBox();
add(box);
box.setBounds(580, 20, 90, 25);
box.addItem("宿舍楼号");
box.addItem("宿舍号");
box.addItem("姓名");
box.addItem("性别");
box.addItem("空缺人数");
b1 = new JButton("确定");
add(b1);
b1.setBounds(380, 50, 70, 25);
b1.addActionListener(this);

b2 = new JButton("取消");//取消按钮的监听
add(b2);
b2.setBounds(480, 50, 70, 25);
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if(cmd.equals("取消"))
txt.setText("");
}
});

//表
String[ ]columnHeaderVector = {""};
table = new JTable();
JScrollPane srp = new JScrollPane(table);
srp.setBounds(0, 80, 1080,500);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
add(srp);
table.setModel(tableModel);
tableModel.setColumnIdentifiers(columnHeaderVector);
for(int i=0;i<table.getColumnCount();i++){
DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();
TableColumn col = colModel.getColumn(i);
int width = 10;

TableCellRenderer renderer = col.getHeaderRenderer();
if (renderer == null) {
renderer = table.getTableHeader().getDefaultRenderer();
}
Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false,
false, 10, 10);
width = comp.getPreferredSize().width;
col.setPreferredWidth(width+180);
}
}

public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();
if(e.getSource() instanceof JButton){
if(cmd.equals("确定"))
{
try {
rowVectors.clear();
columnHeaderVector.clear();
check();

} catch (SQLException e1) {

e1.printStackTrace();

}
}
}
}
public void check() throws SQLException
{

if(txt.getText().equals(""))
{
JOptionPane.showMessageDialog(f,"请填写查询条件");
return;

}


try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch(ClassNotFoundException e){

System.out.println("加载驱动程序失败,请检查");

}
try{

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D://AccomodationControl.mdb" ;

conn = DriverManager.getConnection(url);

stm = conn.createStatement();

if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("宿舍楼号"))
{

r = stm.executeQuery("select 宿舍楼号,宿舍号,姓名,性别,空缺人数 from 宿舍查询 where 宿舍楼号= '"+txt.getText()+"' ");

}

else
if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("宿舍号"))
{

r = stm.executeQuery("select 宿舍楼号,姓名,性别,空缺人数 from 宿舍查询 where 宿舍号= '"+txt.getText()+"' ");

}
else
if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("姓名")){

r = stm.executeQuery("select 宿舍楼号,宿舍号,姓名,性别 ,空缺人数 from 宿舍查询 where 姓名= '"+txt.getText()+"'");
}
else
if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("性别")){

r = stm.executeQuery("select 宿舍楼号,宿舍号,姓名,空缺人数 from 宿舍查询 where 性别= '"+txt.getText()+"'");
}
else
if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("空缺人数"))
{
r = stm.executeQuery("select 宿舍楼号,宿舍号,空缺人数 from 宿舍查询 where 空缺人数= '"+txt.getText()+"'");

}

int columnCount =r.getMetaData().getColumnCount();

Vector singleRow=new Vector();
while(r.next())
{


for(int i=0;i<columnCount;i++)
singleRow.addElement(r.getObject(i+1));

rowVectors.addElement(singleRow);

}

ResultSet rsColumns=conn.getMetaData(). getColumns(null,null,"宿舍查询",null);

while(rsColumns.next())
{
columnHeaderVector.addElement(rsColumns.getString("COLUMN_NAME"));

}

tableModel.setDataVector(rowVectors,columnHeaderVector);

stm.close();
conn.close();

}catch(SQLException ae){

JOptionPane.showMessageDialog(f,"没有此信息");

}

}




public static void main(String[] args){
new dormitory_Inquire();
}
}
这是代码 查询宿舍号那里和空缺人数那里无法查询
liu_yang_0923 2010-11-08
  • 打赏
  • 举报
回复
LZ,这图片看不了呀

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧