- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用SWT中虚拟表格解决大数据量加载问题
用SWT中的虚拟表格解决大数据量加载问题
此文引用网站以为兄弟的,具体地址记得不是很清楚。但是主体内容一样。
问题的提出:一般情况下,我们采用分页技术来解决大数据量加载的问题,这也是最好的办法。但是在有的项目中会遇到一次加载万单位级别数据的需求。尽管这是很糟糕的做法,即耗资源、加载速度又慢,但用户明指明了这样的需求,不这么做还不行。
解决方法:采用SWT中的虚拟表格技术来创建拥有大数据量的表格,解决加载速度让人难以忍受的问题,提升加载效率。
为了充分的说明问题,本文通过对比常规方法和虚拟表格技术加载2万条数据所需的时间,来说明虚拟表格在加载大数据量时的优越表现。
第一步:准备数据
1.? 首先建立所需的数据表
create table user (id int(10) primary key auto_increment, name1 varchar(20) , name2 varchar(20) , name3 varchar(20) , name4 varchar(20)) type=innodb;
2.插入数据(写测试的目的一般带有破坏性,我插了2万条)
for (int i=0;i20000;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 +));
}
3.创建一个DAO文件,用来处理插入和获得数据:
ConnDAO.java,详细内容请参看源文件
//按照给定的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;
}
}
第二步:创建测试文件
?
在开始之前,请你确认正确安装了SWT Designer,创建一个基于SWT/JFS的项目(不是必须,但这样可以方便使用可视化编辑,当然你也可以直接编写代码)。
?
1.为了与虚拟表格进行对比,我们首先用普通Table加载这2万条数据。
HelloWorld_Common.java
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) {
//为了清晰说明问题,在此省略了相关部分代码,可以参考源代码
tabl
文档评论(0)