使用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链接的套路还是很意义 术语以及相 ...
随机推荐
- 防火墙设置:虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)
我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关 ...
- windows创建桌面快捷方式的VBA脚本
Dim wShell, oShortcut 'Dim strDesktop$ ' 为了与VBS兼容, Dim strDesktop ' 这里改写一下,测试通过... Set w ...
- BootLoader作用
BootLoader 是系统加电后运行的第一段代码.一般它只在系统启动时非常短的时间内运行. 由OS Loader负责将所要引导的操作系统的内核映象从硬盘上读到系统RAM中,然后跳转到内核的入口点上. ...
- http概述
HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...
- Msys+Mingw在手 妙用在心!
1 缘起 平时在一些c++群面,看见很多大学十分努力的学习c++/MFC ,看见在编程语言百花争芳的时候,C/C++还是很有很有魅力.估计很多初学者使用都是window下的visual stdio 开 ...
- iOS多线程编程Part 3/3 - GCD
前两部分介绍了NSThread.NSRunLoop和NSOperation,本文聊聊2011年WWDC时推出的神器GCD.GCD: Grand Central Dispatch,是一组用于实现并发编程 ...
- php中const与define的使用区别 详解
1.const用于类成员变量定义,一旦定义且不能改变其值.define定义全局常量,在任何地方都可以访问. 2.define不能在类中定义而const可以. 3.const不能在条件语句中定义常量 i ...
- Http请求和响应应用
//以下载方式打开资源 public void test4(HttpServletResponse response) throws IOException { response.setHeader( ...
- Core身份认证
Core中实现一个基础的身份认证 注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET ...
- cadence16.6 中orcad导出网表时ERROR (ORCAP-5004)
ORCAD网表输出时 ERROR (ORCAP-5004):Error initializing COM property pages 之前遇到过这个问题,解决后忘了记录下来了.依稀记得问题答 ...