import java.util.ArrayList;
public class FindData {
// ***************** 参数说明***********************
//==该类主要执行对 DataTabe 数据进行模糊查询 和排序操作==
// objDataTable 需要执行操作的数据源
// ColumnsIndex 需要执行操作的列的索引
// ColumnsName 需要执行操作的列名
// findKeyWord 查询的关键词
// Min 指定范围查询数据--底限值
// Max 指定范围查询数据--上限值
// ordeBy 按列索引排序
// ordeByName 按列名 派序
// DESC 是否降序排列
//***************************************************
// 模糊查询数据 以findKeyWord 开始的
public static DataTable findLikeData(DataTable objDataTable,
String ColumnsName,
String findKeyWord) {
int ColumnsIndex = getColumnsIndex(objDataTable, ColumnsName);
if (!DataError(objDataTable, ColumnsIndex, -1, -1)) {
objDataTable.clear();
return objDataTable;
}
DataTable NewDataTable = new DataTable();
ArrayList ar = new ArrayList();
//复制结构
NewDataTable = objDataTable.Clone();
String[][] objRows = objDataTable.getRows();
int ColumnsCount = objDataTable.Columns.count();
int RowCount = objRows.length;
for (int i = 0; i < RowCount; i++) {
//查询到与FindKeyword匹配的数据并且 FindKeyWord 不为空的情况下 添加数据
if (objRows[i][ColumnsIndex]!=null&&objRows[i][ColumnsIndex].
startsWith(findKeyWord) &&
findKeyWord.length() > 0) {
String[] str = new String[ColumnsCount];
for (int j = 0; j < ColumnsCount; j++) {
str[j] = objRows[i][j];
}
ar.add(str);
}
}
//从定义行
RowCount = ar.size();
//如果未查询到匹配数据则返回不执行以下步骤
if (RowCount == 0)
return NewDataTable;
String[][] Rows = new String[RowCount][ColumnsCount];
for (int i = 0; i < RowCount; i++) {
Rows[i] = (String[]) ar.get(i);
}
try {
NewDataTable.Rows.add(Rows);
} catch (Exception ex) {
ex.printStackTrace();
}
return NewDataTable;
}
//指定(Min~MAX)范围查询
public static DataTable findLikeData(DataTable objDataTable,
String ColumnsName, int Min, int Max) {
int ColumnsIndex = getColumnsIndex(objDataTable, ColumnsName);
//检测数据有误则返回无数据的DataTable
if (!DataError(objDataTable, ColumnsIndex, Min, Max) ||
(Min == -1 && Max == -1)) {
objDataTable.clear();
return objDataTable;
}
DataTable NewDataTable = new DataTable();
ArrayList ar = new ArrayList();
NewDataTable = objDataTable.Clone();
String[][] objRows = objDataTable.getRows();
int ColumnsCount = objDataTable.Columns.count();
int RowCount = objRows.length;
// 查询Max以下的数据处理
try {
if (Min == -1 && Max != -1) {
for (int i = 0; i < RowCount; i++) {
if (objRows[i][ColumnsIndex]!=null&&Float.parseFloat(objRows[i][ColumnsIndex]) <
Max) {
String[] str = new String[ColumnsCount];
for (int j = 0; j < ColumnsCount; j++) {
str[j] = objRows[i][j];
}
ar.add(str);
}
}
// 查询Min以上的数据处理
} else if (Min != -1 && Max == -1) {
for (int i = 0; i < RowCount; i++) {
if (objRows[i][ColumnsIndex]!=null&&Min <
Float.parseFloat(objRows[i][ColumnsIndex])) {
String[] str = new String[ColumnsCount];
for (int j = 0; j < ColumnsCount; j++) {
str[j] = objRows[i][j];
}
ar.add(str);
}
}
//查询两者之间的数据
} else {
for (int i = 0; i < RowCount; i++) {
if (objRows[i][ColumnsIndex]!=null&&Min <=
Float.parseFloat(objRows[i][ColumnsIndex]) &&
Float.parseFloat(objDataTable.getRows()[i][
ColumnsIndex]) <= Max) {
String[] str = new String[ColumnsCount];
for (int j = 0; j < ColumnsCount; j++) {
str[j] = objRows[i][j];
}
ar.add(str);
}
}
}
}catch(NumberFormatException ex){
System.out.println("查询数据失败! error: 列 "+ColumnsName+" 数据无法转换成folat类型");
}
RowCount = ar.size();
//如果未查询到匹配数据则返回不执行以下步骤
if (RowCount == 0)
return NewDataTable;
String[][] Rows = new String[RowCount][ColumnsCount];
for (int i = 0; i < RowCount; i++) {
Rows[i] = (String[]) ar.get(i);
}
try {
NewDataTable.Rows.add(Rows);
} catch (Exception ex) {
ex.printStackTrace();
}
return NewDataTable;
}
//对参数的验证
private static boolean DataError(DataTable objDataTable,
int ColumnsIndex,
int Min,
int Max) {
if (objDataTable.getColumnsCount() <= 0 ||
objDataTable.getRowsCount() <= 0) {
System.out.println("DataTabe中无数据");
return false;
}
if (ColumnsIndex < 0)
return false;
if (Min != -1 && Max != -1) {
if (Min > Max) {
System.out.println("参数 Min > Max");
return false;
}
}
return true;
}
/**
* DataTable 排序
* @param objDataTable 数据源
* @param ColumnsName 列名
* @param isNumber 是否为数字类型排序
* @param ASC 是否为升序排序
* @return 排序后的DataTable
*/
private static DataTable isDESC(DataTable objDataTable,
String ColumnsName,boolean isNumber,int beginIndex, int endIndex,
boolean ASC) {
int ColumnsIndex = getColumnsIndex(objDataTable, ColumnsName);
//对参数验证
if (objDataTable.getRowsCount() <= 0)
return objDataTable;
if (!DataError(objDataTable, ColumnsIndex, -1, -1)) {
objDataTable.clear();
return objDataTable;
}
String[][] objRows = objDataTable.getRows();
int row = objRows.length;
int col = objDataTable.getColumnsCount();
String str[];
for (int i = 0; i < row; i++) {
if(objRows[i][ColumnsIndex]!=null){
for (int j = 0; j < i; j++) {
if(objRows[j][ColumnsIndex]!=null){
try {
if(isNumber){ //数字类型排序
if (!ASC) {
if (Float.parseFloat(objRows[i][ColumnsIndex]) >
DataTable 数据存储,FindData数据查询
4星 · 超过85%的资源 需积分: 10 38 浏览量
2008-10-23
09:26:21
上传
评论
收藏 8KB RAR 举报
xssz171
- 粉丝: 2
- 资源: 2
最新资源
- 课程设计-python爬虫-爬取日报,爬取日报文章后存储到本地,附带源代码+课程设计报告
- 软件和信息技术服务行业投资与前景预测.pptx
- 课程设计-基于SpringBoot + Mybatis+python爬虫NBA球员数据爬取可视化+源代码+文档+sql+效果图
- 软件品质管理系列二项目策划规范.doc
- 基于TensorFlow+PyQt+GUI的酒店评论情感分析,支持分析本地数据文件和网络爬取数据分析+源代码+文档说明+安装教程
- 软件定义无线电中的模拟电路测试技术.pptx
- 软件开发协议(作为技术开发合同附件).doc
- 软件开发和咨询行业技术趋势分析.pptx
- 软件测试题详解及答案.doc
- 软件漏洞生命周期管理策略.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈