由于项目需求,最近必须用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("");

}

}

转载于:https://www.cnblogs.com/yexiaochai/archive/2011/07/10/2102100.html

在java中实现类似于.net中的DataTable,请各位看看,这种方法可行吗?相关推荐

  1. C#EF中,使用类似于SQL中的% 模糊查询

    最近在做项目的时候需要使用到模糊查询,但是后台使用EF写的 而不是ADO或者是Dapper,如果是这样的话,我们就可以使用Sql语句直接进行模糊查询 现在我们需要在LINQ中使用类似于模糊查询 在EF ...

  2. java 类似datatable_在java中实现类似于.net中的DataTable,请各位看看,这种方法可行吗?...

    由于项目 说句实话,我做起来非常之不爽快,各种不爽快,随便什么地方都想和.net靠近, 所以晚上就写了这个模拟DataTable的简单功能,初步测试是通过了,由于太晚了也不能优化. 现在贴出代码请各位 ...

  3. mac os linux pageup pagedown,[整理]Mac中的类似于Windows中的PageUp和PageDown以及Ctrl+Home和Ctrl+End...

    (1) 之前以为Ctrl+Home和Ctrl+End是 Command+向上箭头 Command+向下箭头 结果发现又好像不是. 刚发现的是: option(Alt)+向上箭头 option(Alt) ...

  4. c# 经验谈:巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)...

    我们在项目经常会碰到一些特殊需求 例如下拉框是复选的,查询条件是根据下拉框中复选项进行拼接 看到此图后大家肯定会说,这很简单嘛 将所有的选项 拼成"'1-3','5-9'"  然后 ...

  5. 自定义类似于listView中Item背景

    自定义类似于listView中Item背景 文章分类:移动开发 方法一. drawable/listitem_bk.xml Xml代码  <?xml version="1.0" ...

  6. java backbone_[Java教程]移动前端开发中的Backbone之一:Backbone中的模型和集合

    [Java教程]移动前端开发中的Backbone之一:Backbone中的模型和集合 0 2015-09-24 17:00:04 当我们开发含有大量Javascript的web应用程序时,首先你需要做 ...

  7. java script的图片隐藏,java和javascript中过滤掉img形式的字符串不显示图片的方法...

    本文实例讲述了java和javascript中过滤掉img形式的字符串不显示图片的方法.分享给大家供大家参考.具体实现方法如下: 1. javascript过滤掉和形式的字符串 复制代码代码如下: 过 ...

  8. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  9. java字符串拼接_Java 8中字符串拼接新姿势:StringJoiner

    有一个重要的拼接方式,那就是Java 8中提供的StringJoiner ,本文就来介绍一下这个字符串拼接的新兵. 如果你想知道一共有多少种方法可以进行字符串拼接,教你一个简单的办法,在Intelli ...

  10. Java 8 ConcurrentHashMap源码中竟然隐藏着两个BUG

    Java 7的ConcurrenHashMap的源码我建议大家都看看,那个版本的源码就是Java多线程编程的教科书.在Java 7的源码中,作者对悲观锁的使用非常谨慎,大多都转换为自旋锁加volati ...

最新文章

  1. mac的mysql数据库管理_Mac使用MySQL Workbench管理MySQL数据库
  2. ambari hive mysql_ambari方式安装hadoop的hive组件遇到的问题
  3. boost::geometry::concatenate_iterator用法的测试程序
  4. 08_sklearn数据集,数据集划分train_test_split,sklearn.datasets及其api,sklearn分类数据集,sklearn回归数据集,转换器与预估器
  5. 浅析如何在Nancy中生成API文档
  6. 对h.264压缩视频码流中i帧的提取(firstime)
  7. 常见数据结构与算法整理总结(下)
  8. Python精通-运算符与基本数据类型(二)
  9. 游戏玩家场景高清桌面壁纸都是什么样的?
  10. oracle 00283,数据库出现ORA-00283/ORA-01610的问题
  11. 屏幕监控中捕获鼠标位置信息
  12. TripMode 管理 App 网络数据使用情况
  13. Auto Highlight for Mac(Safari文本自动高亮插件)
  14. python安装imageai库方法_小白对 imageAI环境搭建 实现object detection 的初使用(自己所用)...
  15. Java web 集成使用QQ互联
  16. uiuc大学计算机排名2019,2019年QS世界大学排名伊利诺伊大学香槟分校排名第71
  17. python任务编排_工作流中的任务编排与治理
  18. 360度全方位解析死链接
  19. 用HTML搭建3D立体相册网页,可放大缩小
  20. Cesium加载各种互联网地图(一)

热门文章

  1. hibernate入门二之单表操作
  2. SQL server脚本语句积累
  3. JVM性能监控工具(一)-jdk命令行工具
  4. 你为什么用微信,不用 QQ ?
  5. GetAsyncKeyState() 0x8000
  6. JTable 学习一
  7. 试用EF开发WEB应用程序(15): EF Servlet, or EFSP?
  8. 驳熊节和Martin Fowler的Java消亡论!
  9. Java基本类型占用字节数(或 bit数)
  10. 学JS的心路历程 - JS应用