从MS SQL检索出来的数据,如:
select name,filename from sysdatabases;
怎样把这个结果放到JTable控件里面?
(像VB等语言中可以通过设置grid控件的属性来显示这些数据,不知道Java里面怎么设置)
select name,filename from sysdatabases;
怎样把这个结果放到JTable控件里面?
(像VB等语言中可以通过设置grid控件的属性来显示这些数据,不知道Java里面怎么设置)
Frame类中是这样的
private Object[][] info;
private String[] names;
JTable table = new JTable(info,names);
table.setPreferredScrollableViewportSize(new Dimension(400, 50));
JScrollPane scrollPane = new JScrollPane(table);
this.getContentPane().add(scrollPane);info 和 names是这样获取的:public class ListSession { private Statement stmt ;
private SessionWrap sew;
private String[] names;
private int i, j, rowNum, colNum;
private Object[][] info;
private String sqlstr;
private ResultSet res;
private ResultSetMetaData rsmd; public ListSession(String table,String items) {
sew = new SessionWrap();
stmt=sew.getStatement();
listConnect(table,items);
}
private void listSessionClose() {
sew.connectClose();
} private void listConnect(String table,String items) {
sqlstr = "select count(*) from "+table;
try {
res = stmt.executeQuery(sqlstr);
res.next();
rowNum = res.getInt(1);
} catch (SQLException e) {
e.printStackTrace();
} sqlstr = "select "+items+" from "+table;
try {
res = stmt.executeQuery(sqlstr);
rsmd = res.getMetaData();
colNum = rsmd.getColumnCount();
formatResult();
} catch (SQLException e) {
e.printStackTrace();
}
listSessionClose();
} private void formatResult()throws SQLException {
names = new String[colNum];
for (i = 1; i <= colNum; i++)
names[i - 1] = rsmd.getColumnName(i);
info = new Object[rowNum][];
i = 0;
while (res.next()) {
info[i] = new Object[colNum];
for (j = 1; j <= colNum; j++) {
info[i][j - 1] = res.getObject(j);
}
i++;
}
}
public String[] getNames() {
return names;
} public Object[][] getInfo() {
return info;
}}
需要设置TableModel,利用setModel(TableModel dataModel)方法 ;
你看看DefaultTableModel这个类吧。
还是需要自己写一些东西的。
import java.awt.*;
import javax.swing.*;
import java.util.Vector;
import java.sql.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.table.JTableHeader;
import java.awt.Rectangle;
class renshiguanli extends JFrame {
public renshiguanli() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
} private void jbInit() throws Exception {
setSize(new Dimension(1024, 768));
getContentPane().setLayout(null);
try {
ResultSetMetaData rsd = null;
Vector col = new Vector();
Vector dat = new Vector();
sql d = new sql();
Connection con = null;
con = d.date();
Statement s = con.createStatement();
ResultSet rs = s.executeQuery("Select * from yuangongxinxi");
rsd = rs.getMetaData();
int i = 0;
for (i = 1; i <= rsd.getColumnCount(); i++) {
col.add(rsd.getColumnName(i));
} while (rs.next()) {
Vector v = new Vector();
for (i = 1; i <= rsd.getColumnCount(); i++) { v.addElement(rs.getString(i));
}
dat.addElement(v);
}
table = new JTable(dat, col);
table.setBounds(new Rectangle(11, 0, 266, 117));
} catch (SQLException e) {
System.out.println(e);
}
table.setFont(new java.awt.Font("新宋体", Font.PLAIN, 12));
table.setBounds(new Rectangle(4, 58, 10, 12));
jsp.setFont(new java.awt.Font("新宋体", Font.PLAIN, 12));
jsp.setBorder(BorderFactory.createEtchedBorder());
jsp.setBounds(new Rectangle(34, 61, 542, 306)); this.getContentPane().add(table);
this.getContentPane().add(jsp); jsp.getViewport().setView(table); } JTable table = new JTable();
JScrollPane jsp = new JScrollPane();
}
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.Vector;public class JSwingTable extends JFrame
{
JScrollPane jsp=new JScrollPane();
JTable dbname;
public JSwingTable()
{
super("加载数据库内容示例");
Container c=getContentPane();
c.setLayout(new BorderLayout());
ResultSetMetaData rsd=null;
Vector col= new Vector();
Vector dat= new Vector();
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundException e1)
{
System.out.println("未找到相关的驱动程序!");
}
try
{
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=master;user=sa;password=pwd;");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select object_name(syscolumns.id) as '表名',syscolumns.name as '列名',systypes.name as '类型',syscolumns.length as '长度' from syscolumns,systypes,sysobjects where sysobjects.id=syscolumns.id and sysobjects.type='u' and syscolumns.xtype=syscolumns.xtype order by '表名','列名'");
rsd=rs.getMetaData();
for(int i=1;i<=rsd.getColumnCount();i++)
{
col.add(rsd.getColumnName(i));
} while(rs.next())
{
Vector v=new Vector();
for(int i=1;i<=rsd.getColumnCount();i++)
{
v.addElement(rs.getString(i));
}
dat.addElement(v);
}
st.close();
con.close();
System.out.println("数据库加载成功!");
}
catch(SQLException e2)
{
System.out.println("table not found!"+e2.getNextException()+"\n"+e2.getSQLState());
}
dbname=new JTable(dat,col);
jsp.getViewport().add(dbname);
c.add(jsp); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,600);
setVisible(true);
} public static void main(String[] args)
{
JSwingTable jst=new JSwingTable();
}
}