在java中实现类似于.net中的DataTable,请各位看看,这种方法可行吗?
来源:互联网 发布:淘宝账号忘了怎么办 编辑:程序博客网 时间:2024/05/22 06:07
由于项目需求,最近必须用java做一个项目。
说句实话,我做起来非常之不爽快,各种不爽快,随便什么地方都想和.net靠近,
所以晚上就写了这个模拟DataTable的简单功能,初步测试是通过了,由于太晚了也不能优化。
现在贴出代码请各位大哥,帮物品看看,此种方法是否可行???
在java中实现.net的datatable功能!!!
package cdu.yas.zfkp.util;
import java.util.List;
public class DataTable {
List<DataRow> row;
public DataTable(List<DataRow> r) {
row = r;
}
public List<DataRow> getRow() {
return row;
}
public void setRow(List<DataRow> row) {
this.row = row;
}
}
package cdu.yas.zfkp.util;
import java.util.List;
public class DataRow {
List<DataColumn> col;
public DataRow(List<DataColumn> c) {
col = c;
}
public List<DataColumn> getCol() {
return col;
}
public void setCol(List<DataColumn> col) {
this.col = col;
}
}
package cdu.yas.zfkp.util;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class DataColumn {
String key;
Object value;
public DataColumn(String k, Object v) {
key = k;
value = v;
}
public String getKey() {
return key;
}
public Object getValue() {
return value;
}
public void setKey(String key) {
this.key = key;
}
public void setValue(Object value) {
this.value = value;
}
}
package cdu.yas.zfkp.util;
public class SqlParameter {
public SqlParameter(String type, String value) {
this.type = type;
this.value = value;
}
String type;
String value;
public String getType() {
return type;
}
public String getValue() {
return value;
}
public void setType(String type) {
this.type = type;
}
public void setValue(String value) {
this.value = value;
}
}
public DataTable executeValue(String sql, SqlParameter[] p) {
Connection conn = DB.createConn();
PreparedStatement ps = DB.prepare(conn, sql);
List<List<HashMap<String, Object>>> table = new ArrayList<List<HashMap<String, Object>>>();
DataTable t = null;
try {
for (int j = 0; j < p.length; j++) {
// wl(p[j].getValue() + "--" + p[j].getType() + "--" + j);
if (p[j].getType().equals("int")) {
ps.setInt(j + 1, Integer.parseInt(p[j].getValue()));
}
if (p[j].type.equals("String")) {
ps.setString(j + 1, p[j].getValue());
}
if (p[j].type.equals("Date")) {
ps.setDate(j + 1, Date.valueOf(p[j].getValue()));
}
}
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
List<DataRow> row = new ArrayList<DataRow>();// 表所有行集合
List<DataColumn> col = null;// 行所有列集合
DataRow r = null; // 单独一行
DataColumn c = null;// 单独一列
// 此处开始循环读数据,每次往表格中插入一行记录
while (rs.next()) {
// 初始化行集合,
// 初始化列集合
col = new ArrayList<DataColumn>();
// 此处开始列循环,每次向一行对象插入一列
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
String columnName = rsmd.getColumnName(i);
Object value = rs.getObject(columnName);
// 初始化单元列
c = new DataColumn(columnName, value);
// 将列信息加入列集合
col.add(c);
}
// 初始化单元行
r = new DataRow(col);
// 将行信息降入行结合
row.add(r);
}
// 得到数据表
t = new DataTable(row);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(ps);
DB.close(conn);
}
return t;
}
最后的测试方法
private void wl(String s) {
System.out.println(s);
}
@Test
public void testSql() throws SQLException {
DB db = new DB();
SqlParameter[] p = new SqlParameter[1];
p[0] = new SqlParameter("int", "1");
String sql = "select * from kpxz where kpxzbh!=?";
DataTable table = db.executeValue(sql, p);
for (DataRow row : table.getRow()) {
for (DataColumn col : row.getCol()) {
System.out.print(col.getKey() + ":" + col.getValue() + "--");
}
wl("");
}
}
- 在java中实现类似于.net中的DataTable,请各位看看,这种方法可行吗?
- 请各位大侠帮忙看看我编的程序可行吗,
- 80/20法则在软件设计中可行吗?
- 函数中的函数可行吗?
- 在DataTable中实现DataTable.Select("Distinct")功能/数组的方式实现DataTable中的distinct
- 对照着看看你的创业计划可行吗?
- 请各位高人进来看看。急!
- ASP.NET 使用DataTable在Table中实现自定义分页
- 在NET 1.1中合并两个DataTable的简单实现
- ASP.NET 使用DataTable在Table中实现自定义分页
- java求数组的平衡点,请各位高手看看对否?
- [转]在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- 在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- Java中类似于C#中的foreach语句
- Java 中如何实现(类似于C#中的OUT)的输出类型参数
- 为什么DoDragDrop在线程中不能正常?请高手看看。
- 在asp.net中实现可拖动列的table
- 请各位专家教授给我看看问题出在那里
- winform引用webservice
- MySQL添加索引命令
- cross_compile glibc for arm
- MyBatis是什么
- 编译和链接的区别
- 在java中实现类似于.net中的DataTable,请各位看看,这种方法可行吗?
- 在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- Java中实现DataTable工具类,并利用其实现简单分页控件。
- 只言碎语总结,今后发展web前端,并分享两个项目难点解决方案。
- 工作四天的体会,公司就是公司和学校果然不同!!!
- 【jquery模仿net控件】简单的dropdownlist与datalist
- Linux下,“ORA-01031: insufficient privileges”的处理
- 【jquery模仿net控件】简单的datalist控件更新,及其简单应用
- 【jquery版.net控件—dropdownlist】附源码,欢迎大家指点、指正、拍砖!!!