这是我可以选到哪页,就把哪页的数据保存下来的功能,放在这防止日后忘记,谁看到了,能用到就拿去用吧,不过别忘了顶我一下
//保存一页
public boolean sqlDriverQuerySaveFileSqlBeanPage(String sessionDriverQueryNameInput,String sessionDriverQueryIdentityCardNumberInput,String sessionDriverQueryRecordNumberInput,String sessionDriverQueryAccumulativeTotalIntegralInput,String sessionDriverQueryPermitDriverModelInput,String sessionDriverQueryManageDepartmentInput,Object sessionPageStartRow,Object sessionPageEndRow) throws Exception
{
boolean sqlDriverQuerySaveFileSqlError = false ;
ResultSet rs = null;
String xm ;
String sfzmhm ;
String dabh ;
String ljjf ;
String zjcx ;
String glbm ;
if(sessionDriverQueryNameInput!=null)
{
xm = "and p.xm ="+"'"+sessionDriverQueryNameInput+"'" ;
}
else
{
xm = "" ;
}
if(sessionDriverQueryIdentityCardNumberInput!=null)
{
sfzmhm = "and d.sfzmhm ="+"'"+sessionDriverQueryIdentityCardNumberInput+"'" ;
}
else
{
sfzmhm = "" ;
}
if(sessionDriverQueryRecordNumberInput!=null)
{
dabh = "and d.dabh ="+"'"+sessionDriverQueryRecordNumberInput+"'" ;
}
else
{
dabh = "" ;
}
if(sessionDriverQueryAccumulativeTotalIntegralInput!=null)
{
ljjf = "and d.ljjf ="+"'"+sessionDriverQueryAccumulativeTotalIntegralInput+"'" ;
}
else
{
ljjf = "" ;
}
if(sessionDriverQueryPermitDriverModelInput!=null)
{
zjcx = "and d.zjcx ="+"'"+sessionDriverQueryPermitDriverModelInput+"'" ;
}
else
{
zjcx = "" ;
}
if(sessionDriverQueryManageDepartmentInput!=null)
{
glbm = "and d.glbm ="+"'"+sessionDriverQueryManageDepartmentInput+"'" ;
}
else
{
glbm = "" ;
}
try
{
FileDialog dlg; //定义一个文件存取窗口
// 每个swt程序在最开始都必须创建一个Display对象。它负责swt和操作系统之间的通信。它将swt/JFace的各种调用转化为系统的底层调用
Display display = new Display();
System.out.println(display);
Shell shell = new Shell(display);//一个Shell对象就是一个窗口。你可以在上面放置各种部件创建丰富的图形界面。
dlg = new FileDialog(shell, SWT.SAVE);// 设置为保存对话框
// 设置保存类型
dlg.setFilterNames(new String[]{
"Text Files(*.txt)",
"Excel Files (*.xls)",
"All Files (*.*)"
});
dlg.setFilterExtensions(new String[] {
"*.txt", "*.xls", "*.*"
});
String fileName = null;//所填写的文件名字
String fn = "";//用来判断用户有没填写文件名字
if (fn.equals(""))
{
fileName = dlg.open();//打开保存窗口
if(fileName != null)
fn = fileName;
}
if (fn != "")
{
final String SQL = "select p.xm,d.sfzmhm,p.djzsxxdz,d.dabh,d.zjcx,d.yxqs,d.yxqz,d.ljjf,d.glbm from drv_admin.drivinglicense d ,drv_admin.person p where p.sfzmhm = d.sfzmhm "+xm+" "+sfzmhm+" "+dabh+" "+ljjf+" "+zjcx+" "+glbm+" " ;
System.out.println(SQL);
rs = PageDBConnection.getResultSet(SQL);
byte[] b = null;
FileOutputStream fos = new FileOutputStream(fn);
OutputStreamWriter out = new OutputStreamWriter(fos);//写入文件流
out.write(dlg.getText());
ResultSetMetaData meta = rs.getMetaData();//获得ResultSetMeataData对象。所有方法的参数都是列的索引号,即第几列,从1开始
for(int i=1; i<meta.getColumnCount();i++)//获得该ResultSet所有列的数目
{
b = (meta.getColumnName(i) + "\t").getBytes();//获得i列对应数据类型的类,输出列
fos.write(b);//写入文件
}
// thisPageStartRow是获得了当前页面的起始行,thisPageEndRow是当前页面的结束行
int thisPageStartRow = Integer.parseInt(sessionPageStartRow.toString());
int thisPageEndRow = Integer.parseInt(sessionPageEndRow.toString());
//利用thisPageStartRowOne判断应该保存的是哪页
int thisPageStartRowOne = 0 ;
while(rs.next())
{
//一直循环到想保存的页,保存页之前的不进行操作
if(thisPageStartRowOne<thisPageStartRow)
{
thisPageStartRowOne++ ;
}
//判断是否是需要保存的页
else if(thisPageStartRowOne>=thisPageStartRow&&thisPageStartRowOne<=thisPageEndRow)
{
thisPageStartRowOne++;
fos.write("\r\n".getBytes());//让数据换行
for(int i=1;i<meta.getColumnCount();i++)
{
b = (rs.getString(i) + "\t").getBytes();//输出数据,循环一次数据一个字段
fos.write(b);
}
}
//一旦保存完毕,则退出循环
if(thisPageStartRowOne>=thisPageEndRow)
{
sqlDriverQuerySaveFileSqlError = true;
break ;
}
}
fos.close();//该关的关
out.close();
shell.setText(fn);
MessageBox successBox = new MessageBox(shell);
successBox.setText("信息");
successBox.setMessage("保存文件成功!");
successBox.open();
}
//display.dispose();和display.sleep();其中有一个能够执行到程序都可以正常
display.dispose(); // 释放底层的资源
shell.dispose();
while (!shell.isDisposed()) // 当窗体未被关闭时执行循环体内的代码
{
// 如果未发生事件,通过sleep方法进行监视事件队列
if (!display.readAndDispatch())
{
display.sleep();//关闭线程
}
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
if (rs != null)
{
try
{
rs.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
return sqlDriverQuerySaveFileSqlError;
}