| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1594 人关注过本帖
标题:[原创][求助]jtable与数据库查询
只看楼主 加入收藏
zhanfuxin
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-3-25
收藏
 问题点数:0 回复次数:4 
[原创][求助]jtable与数据库查询


import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.Point;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import java.sql.*;
public class AllInfo extends JFrame implements ActionListener
{
public AllInfo(){
setTitle("排课情况信息查询");
setSize(200,200);
gl=new GridLayout(1,3,20,20);
gl2=new GridLayout(1,1,20,20);
JPanel panel=new JPanel();
JPanel panel2=new JPanel();
panel.setLayout(gl);
panel2.setLayout(gl2);
datelbl=new JLabel("日期");
datetex=new JTextField("");
classtimelbl=new JLabel("节次");
classtimetex=new JTextField("");
selectbtn=new JButton("查询");
model=new DefaultTableModel();
messagetab=new JTable(model);
model.addColumn("日期");
model.addColumn("节次");
model.addColumn("课程名称");
model.addColumn("任课教师");

sp=new JScrollPane(messagetab);
panel.add(datelbl);
panel.add(datetex);
panel.add(classtimelbl);
panel.add(classtimetex);
panel.add(selectbtn);
panel2.add(sp);
selectbtn.addActionListener(this);
getContentPane().add(panel,BorderLayout.CENTER);
getContentPane().add(panel2,BorderLayout.SOUTH);
sql=("select * from paike");
//清除以前记录
for(int n=model.getRowCount()-1;n>=0;n--)
{
model.removeRow(n);
}
try
{
rs=db.getResult(sql);
rs.beforeFirst();
while(rs.next()){
Vector tempvector=new Vector(1,1);
tempvector.add(rs.getString(1));
tempvector.add(rs.getString(2));
tempvector.add(rs.getString(3));
tempvector.add(rs.getString(4));

model.addRow(tempvector);
}
}catch(SQLException e)
{
System.out.println(e);
}
}
public void actionPerformed(ActionEvent e)
{
boolean isFirst=true;
sql="select * from paike";
for(int n=model.getRowCount()-1;n>=0;n--)
{
model.removeRow(n);
}
//book 表示书ID
//author表示USERID
String date=datetex.getText().trim();
String classtime=classtimetex.getText().trim();
if(date.equals("")&classtime.equals(""))
{
JOptionPane.showMessageDialog(null,"最少输入一个查找项目");
return;
}
if(!date.equals(""))
{

sql=sql+" where date1="+date;
isFirst=false;
}
if(!classtime.equals(""))
{

if(isFirst)
{

sql=sql+" where classtime="+classtime;
}
else
{
sql=sql+" and classtime="+classtime;
}
}
rs=db.getResult(sql);
boolean isexist=false;
try
{
//把游标指向结果集的第一行,如果没有数据则返回false
isexist=rs.first();
}
catch(SQLException w)
{
System.out.println(w);
}
//判断结果是否正确
if(!isexist)
{
JOptionPane.showMessageDialog(null,"没有相关资料");
datetex.setText("");
classtimetex.setText("");
return;
}
try
{
rs.beforeFirst();
while(rs.next()){
Vector tempvector=new Vector(1,1);
tempvector.add(rs.getString(1));
tempvector.add(rs.getString(2));
tempvector.add(rs.getString(3));
tempvector.add(rs.getString(4));

model.addRow(tempvector);
}
}
catch(SQLException e2)
{
System.out.println(e2);
}}
private JLabel datelbl;
private JLabel classtimelbl;
private JTextField datetex;
private JTextField classtimetex;
private JButton selectbtn;
private JTable messagetab;
private JScrollPane sp;
private GridLayout gl;
private GridLayout gl2;
private DBManager db=new DBManager();
private ResultSet rs;
private String sql;
private DefaultTableModel model;

}

请解释一下其中关于DefaultTableModel,和JTable的部分,
我想知道DefaultTableModel和JTable在JTable显示数据库数据时的工作原理是怎样的,
请各位大虾帮帮忙啊,最好详细一点啊!谢谢了!
特别是以下几处:
如何解释这两句话
model=new DefaultTableModel();
messagetab=new JTable(model);

在Vector中add()和addElement()有什么不同
Vector tempvector=new Vector(1,1);
tempvector.add(rs.getString(1));

DefaultTableModel是什么类,起什么作用
private DefaultTableModel model;

搜索更多相关主题的帖子: 数据库 jtable 查询 
2006-07-16 01:16
hellboy
Rank: 1
等 级:新手上路
威 望:1
帖 子:245
专家分:0
注 册:2006-6-24
收藏
得分:0 
第一个和第三个问题给你个网站 http://www.matrix.org.cn/resource/article/44/44074_Swing_JTable.html 很不错哦
第二个就是返回类型不同啊 其他的没什么区别 一个是void 一个是 boolean


努力 努力 !!!!!!
2006-07-16 09:54
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

DefaultTableModel是什么类,起什么作用
private DefaultTableModel model;

它是负责你的TABLE的模型,你实现了它,就可以用这个模型去构造一个JTable了


可惜不是你,陪我到最后
2006-07-16 11:01
zhanfuxin
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-3-25
收藏
得分:0 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.table.DefaultTableModel;
class BookFrame extends JFrame
{
String SQLstatement="select *from BOOK";
Vector rowvector=new Vector(1,1);
DefaultTableModel model=new DefaultTableModel();
JTable table=new JTable(model);
Container contentPane= getContentPane();
public BookFrame()
{
setTitle("图书室书籍信息");
setSize(500,500);
ShowData(SQLstatement);
Container contentPane= getContentPane();
contentPane.add(table);
setVisible(true);
}
public DefaultTableModel ShowData(String sqlstatement)
{
String s="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://xinzhanf-119743:1433;DatabaseName=xinzhanfu";
Connection con=null;
Statement sta=null;
ResultSet rs=null;
try
{
Class.forName(s);
con=DriverManager.getConnection(url,"sa","sa");
sta=con.createStatement();
rs=sta.executeQuery(sqlstatement);
ResultSetMetaData rsmd=rs.getMetaData();
while(rs.next()){
for(int i=1;i<=rsmd.getColumnCount();i++)
{
System.out.println(rs.getString(i));
rowvector.add(rs.getString(i));
model.addColumn(rowvector);
}
}
}
catch(Exception e)
{
System.out.println(e);
}
return model;
}
public static void main(String args[])
{
BookFrame bookframe=new BookFrame();
bookframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
bookframe.show();
}
}
这段代码为什么不显示table,看不数据库中的数据啊
我的数据是:
110001 数据结构 严蔚民 CM00001 2 1 清华大学出版社 22

2006-07-16 13:22
zhanfuxin
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-3-25
收藏
得分:0 
看不到数据库中的数据啊

2006-07-16 15:21
快速回复:[原创][求助]jtable与数据库查询
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041031 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved