使用List,Dictionary加载数据库中的数据
情景描述:数据库中有一张设备表,字段DWDM存放的是各个厂编号,字段ZNBH存放的是设备编号。其中DWDM跟ZNBH是一对多的关系。需要将数据库中的值加载到List<Dictionary<string,List<string>> 中。
其中内部List<string>存放的是一个站内编号ZNBH,Dictionary<string,List<string>> 存放的是一个厂的DWDM和所有的站内编号ZNBH,
List<Dictionary<string,List<string>>中存放的是各个厂的各台设备。
数据库中数据如下:
案例分析:根据题意,结合以上具体数据,可知数据库中存放了这样的数据
List<string> list=new List<string>()
{
"01","02","SL"
};
Dictionary<string,List<string>> dic=new Dictionary<string,List<string>>();
dic.add("30202419",list);
List<Dictionary<string,List<string>>> result=new List<Dictionary<string,List<string>>>();
result.add(dic);
这里关键是创建List<string>的时机 - 某个厂的第一台设备,将dic加入结果集的时机 - 某个厂的最后一台设备。
代码实现:
public List<Dictionary<string, List<string>>> GetDwdmZnbhList(int type)
{
List<Dictionary<string, List<string>>> result = null;
string sql = @"select dwdm,znbh from sysconfig_llwh where jclx={0} group by dwdm, znbh order by dwdm";
sql = String.Format(sql, type);
DataTable dt = DBDataAccess.GetInstance().GetDataTable(SysConfig.TargetConnectionString, sql); string dwdm_pre = String.Empty;
string dwdm = String.Empty;
string dwdm_next = String.Empty;
string znbh = String.Empty; Dictionary<string, List<string>> dic = null;
List<string> list = null;
result = new List<Dictionary<string, List<string>>>();
for (int i = ; i < dt.Rows.Count; i++)
{
//为本行前面的单位代码赋值
if (i == )
dwdm_pre = "";
else
dwdm_pre = dt.Rows[i - ]["DWDM"].ToString();
//为本行单位代码赋值
dwdm = dt.Rows[i]["DWDM"].ToString();
//为本行后面行的单位代码赋值
if (i != dt.Rows.Count - )
dwdm_next = dt.Rows[i + ]["DWDM"].ToString();
else
dwdm_next = "";
if (dwdm_pre != dwdm)
{
//在谋厂第一台设备时,创建List,Dic
list = new List<string>();
dic = new Dictionary<string, List<string>>();
dwdm = dt.Rows[i]["DWDM"].ToString();
znbh = dt.Rows[i]["ZNBH"].ToString();
list.Add(znbh);
dic.Add(dwdm, list);
if (dwdm != dwdm_next)
result.Add(dic);
}
else
{ znbh = dt.Rows[i]["ZNBH"].ToString();
list.Add(znbh);
dic.Clear();
dic.Add(dwdm, list);
//在谋厂最后一台设备时,将Dic 加入List中
if (dwdm != dwdm_next)
result.Add(dic);
}
}
return result;
}
使用List,Dictionary加载数据库中的数据的更多相关文章
- 依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?
原文:https://blog.csdn.net/u012345283/article/details/39558537 原文:https://blog.csdn.net/wandrong/artic ...
- Spark 加载数据库mysql表中数据进行分析
1.工程maven依赖包 <properties> <spark_version>2.3.1</spark_version> <!-- elasticsear ...
- Android之数据存储----使用LoaderManager异步加载数据库
一.各种概念: 1.Loaders: 适用于Android3.0以及更高的版本,它提供了一套在UI的主线程中异步加载数据的框架.使用Loaders可以非常简单的在Activity或者Fragment中 ...
- ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动
一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...
- ThinkCMF项目部署出现无法加载数据库驱动解决方案
最近有个TP项目刚从从本地部署到阿里云服务器上,出现了无法加载数据库驱动的错误,提示 :( 无法加载数据库驱动: Think\Db\Driver 这里分享一下出现该错误的解决步骤: 首先记得项目部署到 ...
- java 加载数据库驱动
JDBC编程步骤见 JDBC编程步骤 JDBC编程的第一步是加载数据库驱动,使用Class类的forName()方法,Class.forName("com.mysql.jdbc.Driver ...
- Android-LoaderManager异步加载数据库数据
LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ...
- JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接
1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...
- jdbc 加载数据库驱动如何破坏双亲委托模式
导读 通过jdbc链接数据库,是每个学习Java web 方向的人必然一开始会写的代码,虽然现在各路框架都帮大家封装好了jdbc,但是研究一下jdbc链接的套路还是很意义 术语以及相 ...
随机推荐
- Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout
如果是为了兼容低版本的Android系统,则需要引用Android Material Design的扩展支持库,我在之前的一篇文章张,较为详细的说明了如何导入Android Material Desi ...
- 用nodejs删除mongodb中ObjectId类型数据
mongodb中"_id"下面有个ObjectId类型的数据,想通过这个数据把整个对像删除,费了半天劲终于搞定费话少说上代码 module.exports = function ( ...
- pyQuery
pyquery – PyQuery complete API 选择器基本支持jQuery用法 class pyquery.pyquery.PyQuery(*args, **kwargs) The ma ...
- Windows C盘格式化或者同平台迁移oracle数据库
我们知道如果是Linux 同平台迁移oracle数据库.只要是安全关闭了数据库,在新机器上创建用户组,配置了环境变量,将数据库安装目录拷贝到对应的目录就好用了. 一直在寻求Windows平台上这类的解 ...
- 常用设备类别及其GUID
Class ClassGuid 说明 1394 6BDD1FC1-810F-11D0-BEC7-08002BE2092F 1394主控制器 CDROM 4D36E965-E325-11CE-BFC1- ...
- float类型进行计算精度丢失的问题
今天一个案子,用户反映数量差异明明是 2.0-1.8,显示的结果却为0.20000005,就自己写了段方法测试了一下:package test1;public class Test2 {/*** @p ...
- MySQL性能优化的最佳20+套经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操 ...
- 《C# 白话系列之——白话委托》读后记
今天在博客圆首页看到一篇文章:<C# 白话系列之——白话委托> http://www.cnblogs.com/djangochina/p/3410002.html#commentform ...
- 【C#】线程池
将方法排入队列以便执行,并指定包含该方法所用数据的对象.此方法在有线程池线程变得可用时执行. class Program { static void Main(string[] args) { str ...
- c++ linux 下的调试工具及用法
1当程序出现core的时候: gdb out[your program] core.out.45726.1431954543 可以看到程序崩溃时候的堆栈信息. valgrind ./out 由于val ...