java 类似datatable_java jdbc 得到像C#里的datatable一样的表格

该方法通过jdbc连接获取SQL数据,利用PreparedStatement执行SQL获取ResultSet,然后转化为二维ArrayList,模拟C#中DataTable的功能。首先获取列名并存入ArrayList,接着遍历结果集,将每行数据作为新的ArrayList添加到总列表中,最后关闭连接并返回数据。
摘要由CSDN通过智能技术生成

public ArrayList> getDataTale2(String sql) throws SQLException {

ArrayList> dt=new ArrayList>();

sta =(SQLServerPreparedStatement)con.prepareStatement(sql);

rs=(SQLServerResultSet)sta.executeQuery();

SQLServerPreparedStatement stmt = (SQLServerPreparedStatement)con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY );

ResultSet rset = stmt.executeQuery();

ResultSetMetaData rsmd = rset.getMetaData() ;

int columnCount = rsmd.getColumnCount();

ArrayList listNames=new ArrayList<>();

for (int c=0;c

String cName=rsmd.getColumnName(c+1);

listNames.add(cName);

}

dt.add(listNames);

while(rs.next()){

ArrayList list=new ArrayList<>();

for (int c=0;c

String cName=rsmd.getColumnName(c+1);

DataTable 是 ADO.NET 面的一个重要概念,它代表着一张数据表,可以对其中的数据进行操作。在 Java 中,虽然没有官方的 DataTable 类,但是我们可以通过编写代码来实现一个类似的对象。 下面,我将介绍一下如何在 Java 中实现 DataTable 对象。 1. 创建 DataTable 类 首先,我们需要创建一个 DataTable 类来代表数据表。这个类应该具有以下基本属性: - 表名:代表数据表的名称。 - 列名:代表数据表中的列名。 - 行数据:代表数据表中的行数据。 代码如下: ```java public class DataTable { private String tableName; private List<String> columnNames; private List<List<Object>> rows; public DataTable(String tableName, List<String> columnNames) { this.tableName = tableName; this.columnNames = columnNames; this.rows = new ArrayList<>(); } // 省略 get/set 方法 } ``` 2. 添加数据 接下来,我们需要添加数据到数据表中。我们可以提供一个 addRow 方法来添加一行数据。这个方法需要接受一个 List<Object> 参数,代表一行数据。在该方法中,我们可以将这一行数据添加到 rows 列表中。 代码如下: ```java public void addRow(List<Object> rowData) { this.rows.add(rowData); } ``` 3. 获取数据 为了获取数据表中的数据,我们可以提供一个 getRows 方法来获取所有的行数据。该方法返回一个 List<List<Object>> 类型的数据。 代码如下: ```java public List<List<Object>> getRows() { return this.rows; } ``` 4. 查询数据 为了查询数据表中的数据,我们可以提供一个 select 方法来根据条件查询数据。该方法接受一个 Predicate<List<Object>> 类型的参数,代表查询条件。在该方法中,我们可以使用 Java 8 的 Stream API 来筛选符合条件的数据。 代码如下: ```java public List<List<Object>> select(Predicate<List<Object>> predicate) { return this.rows.stream().filter(predicate).collect(Collectors.toList()); } ``` 5. 更新数据 为了更新数据表中的数据,我们可以提供一个 update 方法来更新符合条件的数据。该方法需要接受一个 Predicate<List<Object>> 类型的参数,代表更新条件,以及一个 Consumer<List<Object>> 类型的参数,代表更新操作。在该方法中,我们可以使用 Java 8 的 Stream API 来筛选符合条件的数据,并进行更新操作。 代码如下: ```java public void update(Predicate<List<Object>> predicate, Consumer<List<Object>> updater) { this.rows.stream().filter(predicate).forEach(updater); } ``` 6. 删除数据 为了删除数据表中的数据,我们可以提供一个 delete 方法来删除符合条件的数据。该方法需要接受一个 Predicate<List<Object>> 类型的参数,代表删除条件。在该方法中,我们可以使用 Java 8 的 Stream API 来筛选符合条件的数据,并进行删除操作。 代码如下: ```java public void delete(Predicate<List<Object>> predicate) { this.rows.removeIf(predicate); } ``` 7. 完整代码 完整的 DataTable 类代码如下: ```java import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.stream.Collectors; public class DataTable { private String tableName; private List<String> columnNames; private List<List<Object>> rows; public DataTable(String tableName, List<String> columnNames) { this.tableName = tableName; this.columnNames = columnNames; this.rows = new ArrayList<>(); } public void addRow(List<Object> rowData) { this.rows.add(rowData); } public List<List<Object>> getRows() { return this.rows; } public List<List<Object>> select(Predicate<List<Object>> predicate) { return this.rows.stream().filter(predicate).collect(Collectors.toList()); } public void update(Predicate<List<Object>> predicate, Consumer<List<Object>> updater) { this.rows.stream().filter(predicate).forEach(updater); } public void delete(Predicate<List<Object>> predicate) { this.rows.removeIf(predicate); } // 省略 get/set 方法 } ``` 这样,我们就成功地实现了一个简单的 DataTable 类。当然,这个类还有很多可以改进的地方,比如支持数据类型、索引等功能。不过,以上代码足以满足大部分的数据操作需求了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值