create table user (id int(10) primary key auto_increment, name1 varchar(20) , name2 varchar(20) , name3 varchar(20) , name4 varchar(20)) type=innodb;
|
for
(
int
i=0;i<20000;i++)
{
String s =
"chengang"
;
sm.executeUpdate(
"insert into test_table (name0,name1,name2,name3) values ('"
+ s+1 +i +
"','"
+ s +2+i +
"','"
+ s +3+i +
"','"
+ s +4+i +
"')"
);
}
|
//
按照给定的
sql
进行数据库查询
//
取出数据后,赋值个
Vector
,并返回
public Vector executeQuery(String sql)
{
ResultSet rs = null;
Vector vResult = new Vector();
try
{
Class.forName(driver);
con = DriverManager.getConnection(dburl,userName,password);
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int numCols = rsmd.getColumnCount();
while (rs.next())
{
String strTempArray[] = new String[numCols];
for(int i = 1; i <= numCols; i++)
{
/*
将存储过程得到的每个字段赋值到字符串数组,并将其做为对象加入到
vector
类中返回
*/
strTempArray[i - 1] = rs.getString(i);
}
vResult.addElement(strTempArray);
}
}catch(Exception e)
{
System.out.println("Query Error!!!!!!!!!");
}
return vResult;
}
} |
package edu.bjtu.zhao.demo;
//import
引入相关的类,具体可以参考本文的源文件
public class HelloWorld_Common {
private static Table table;
/**
* Launch the application
* @param args
*/
public static void main(String[] args) {
//
为了清晰说明问题,在此省略了相关部分代码,可以参考
源代码
table = new Table(shell, SWT.BORDER);//
注意此处与虚拟表格设置的不同
table.setBounds(40, 30, 723, 290);
//
此处省略了创建
5
列的代码,
try
{
//
获得数据表格数据
ConnDAO dao = new ConnDAO();
String ss= "select * from test_table";//SendTable
为表名
final Vector vResult = dao.executeQuery(ss);
for (int i=0;i<vResult.size();i++)
{
//
因为条目都是直接创建的,这样初始化的过程就相当慢
TableItem item = new TableItem(table,SWT.NONE);
item.setText((String[])vResult.get(i));
}
}catch(Exception exception)
{
exception.printStackTrace();
}
}
}
|
package edu.bjtu.zhao.demo;
//import
……具体的包,可以参见附件中的源代码
public class HelloWorld_Virtual {
private static Table table;
/**
* Launch the application
* @param args
*/
public static void main(String[] args) {
//final Vector vResult = new Vector();
final Display display = Display.getDefault();
final Shell shell = new Shell();//shell
是主程序窗口
shell.setSize(808, 375);//
设置窗体初始化大小
shell.setText("SWT Application");//
设置窗体名称
shell.open();//
主程序打开
/////////////////////////
创建表格
//////////////////////////////////
table = new Table(shell, SWT.BORDER| SWT.VIRTUAL);//
注意此处的设置
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.setBounds(40, 30, 723, 290);
///////////////////
创建表格四列
////////////////////////////////////////////
final TableColumn newColumnTableColumn = new TableColumn(table, SWT.NONE);
newColumnTableColumn.setWidth(100);
newColumnTableColumn.setText("id");
///
同样的方法创建另外
4
列
////////////////////////////////////////////////////////////////////////////////////////////////////
//
获得数据表格数据
ConnDAO dao = new ConnDAO();
String ss= "select * from test_table";//SendTable
为表名
final Vector vResult = dao.executeQuery(ss);
/////////////
设置监听
/////////////////////////////////
/* table.addListener(SWT.SetData, new Listener() {
public void handleEvent(Event event) {
TableItem item = (TableItem)event.item;
int index = event.index;
item.setText((String[])vResult.get(index));
}
}); */
//////////////
另一种方式实现虚拟表格
///////////////////////////////////
final int PAGE_SIZE = 100;
table.addListener (SWT.SetData, new Listener () {
public void handleEvent (Event event) {
TableItem item = (TableItem) event.item;
int index = event.index;
int page = index / PAGE_SIZE;
int start = page * PAGE_SIZE;
int end = start + PAGE_SIZE;
end = Math.min (end, table.getItemCount ());
for (int i = start; i < end; i++) {
item = table.getItem (i);
item.setText ((String[])vResult.get(i));
}
}
});
//////////////
设计总记录数,便于滚动条计算
//////////////////////////////////////////////////
table.setItemCount(vResult.size());
shell.layout();//
主程序布置
while (!shell.isDisposed()) {//
如果主程序没有关闭,这一直循环
if (!display.readAndDispatch())//
如果不忙
display.sleep();//
休眠
}
}
}
|
本文出自 “Grow up” 博客,转载请与作者联系!