CN102567315A - 一种数据查询方法、装置及系统 - Google Patents
一种数据查询方法、装置及系统 Download PDFInfo
- Publication number
- CN102567315A CN102567315A CN2010105788516A CN201010578851A CN102567315A CN 102567315 A CN102567315 A CN 102567315A CN 2010105788516 A CN2010105788516 A CN 2010105788516A CN 201010578851 A CN201010578851 A CN 201010578851A CN 102567315 A CN102567315 A CN 102567315A
- Authority
- CN
- China
- Prior art keywords
- data
- data stream
- relational
- database
- bridge
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明适用于数据处理领域,提供了一种数据查询方法、装置及系统。所述方法包括步骤:在数据库获取关系型数据流;逐个读取关系型数据流的数据,并将读取的数据桥接为对象流;将所述对象流映射为对象。本发明不需事先建立对象模型、关系模型以及映射关系才能使用,使用简单;并且,将数据库的关系型数据流抓换到对象,不仅方便了程序员编程,也提高了查询数据库的数据的便捷性以及高效性。进一步地,在枚举成功或者枚举失败的情况下,都自动关闭数据流,从而保证了数据库连接的安全关闭。
Description
技术领域
本发明属于数据处理领域,尤其涉及一种数据查询方法、装置及系统。
背景技术
目前,很多软件应用系统需要结合数据库和程序一起使用,在使用的过程中,经常需要查询数据库存储的数据。由于企业应用中业务的复杂性和多变性,导致对查询数据库的数据的便捷性、高效性要求比较高。
常用的数据查询方法有以下3种:一种是执行SQL语句,使用自定义代码将只读向前的读取器IDataReader的数据流填充到对象之后,再直接访问对象的数据,该方法虽然可以直接访问对象的数据,但由于需要程序员维护数据库连接的打开和关闭,难以使用;另一种是执行SQL语句,使用数据适配器DataAdapter将IDataReader的数据流填充到DataSet之后,再从DataSet读取数据,由于存入DataSet的数据仍保持关系型结构,因此,对编程造成不便;最后一种是通过对象/关系映射(Object/Relation Mapping,ORM)工具,定义对象模型、关系模型以及它们之间的映射关系,再通过ORM获取数据,由于该方法必须建立对象模型、关系模型以及它们之间的映射关系之后才能使用,使简单的查询任务变得繁琐,且复杂的映射关系易降低ORM的性能。
发明内容
本发明实施例提供了一种数据查询方法,旨在解决现有查询方法的易用性和系统的高效性能之间难以达到平衡的问题。
本发明实施例是这样实现的,一种数据查询方法,所述方法包括步骤:
在数据库获取关系型数据流;
逐个读取关系型数据流的数据,并将读取的数据桥接为对象流;
将所述对象流映射为对象。
本发明实施例的另一目的在于提供一种数据查询装置,所述装置包括:
数据流获取模块,用于在数据库获取关系型数据流;
桥接模块,用于逐个读取关系型数据流的数据,并将读取的数据桥接为对象流;
映射模块,用于将所述对象流映射为对象。
本发明实施例的另一目的在于提供一种包含上述数据查询装置的系统。
本发明实施例中,创建一个枚举器的实现,在数据库中获取关系型数据流,并将获取的数据流桥接为对象流,再利用Linq技术将对象流映射为对象。本发明不需事先建立对象模型、关系模型以及映射关系才能使用,使用简单;并且,将数据库的关系型数据流抓换到对象,不仅方便了程序员编程,也提高了查询数据库的数据的便捷性以及高效性。进一步地,在枚举成功或者枚举失败的情况下,都自动关闭数据流,从而保证了数据库连接的安全关闭。
附图说明
图1是本发明第一实施例提供的数据查询方法流程图;
图2是本发明第二实施例提供的数据查询装置结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了一种:数据查询方法、装置及系统。
本发明实施例在数据库获取了关系型数据流后,将该关系型数据流桥接为对象流,并利用Linq to Object技术将该对象流映射为对象。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明第一实施例提供的数据查询方法,在本实施例中,将获取的关系型数据流桥接为对象流,并将该对象流映射为对象,详述如下:
在步骤S11中,在数据库中获取关系型数据流。
使用IDataReader工具获取关系型数据库中的关系型数据流,该IDataReader工具的具体定义如表1所示:
表1:
IDataReader工具使用Read()函数逐行读取关系型数据库的数据,在读取了一行数据后移动到下一行,读取的一行行有相互关系的数据为关系型数据流。
作为本发明的另一个实施例,在步骤在数据库中获取关系型数据流之前进一步包括步骤:发送获取数据流请求至数据库。
在步骤S12中,逐个读取关系型数据流的数据,并将读取的数据桥接为对象流。
本实施例中,新建一个枚举器IEnumerator,该IEnumerator定义如表2所示:
表2:
由表2可知,该IEnumerator包括用于读取关系型数据流的MoveNext方法,该MoveNext方法用于逐个读取关系型数据流的数据,并将读取的数据桥接为相互之间无关系的对象组成的对象流。其中,将读取的数据桥接为相互之间无关系的对象组成的对象流可用以下方式实现:
创建一个新对象,并将关系型数据流的数据填充到对象上,填充了数据的多个对象组成了对象流。
当然,也可以使用外部定义的方法将读取的一个个数据桥接为对象流,该外部定义的方法只需返回的是对象即可,此处不作限定。将读取的一个个数据桥接为对象流之后,再存储该对象流,以便IEnumerator的Current属性直接使用。
作为本发明的另一个实施例,IEnumerator在枚举完成后,调用IEnumerator的Dispose()方法,自动关闭数据流。由于IEnumerator在枚举成功或失败结束后,都自动关闭数据流,因而能够安全地关闭数据库的连接,从而保证了系统的稳健性。其中,该Dispose()方法可用以下方式实现:
public void Dispose()
{
if(_dataReader!=null)
{
_dataReader.Close();
}
_dataReader=null;
}
在步骤S13中,将对象流映射为对象。
使用Linq将对象流映射为对象。具体可由以下方式实现:
select new
{
Id=p.GetValue<Int64>(0,Convert.ToInt64),
Name=p.GetValue<string>(1,Convert.To String),
LocaleId=p.GetValue<int>(2,Convert.ToInt32)
};
上述代码中,使用Linqto Object技术将桥接为对象流的数据流映射为新的对象。
在本发明第一实施例中,创建一个枚举器的实现,在数据库中获取关系型数据流,并逐个读取该关系型数据流的数据,以便将读取的数据桥接为对象流,再利用Linq to Object技术将对象流映射为对象。本发明使用简单,不需事先建立对象模型、关系模型以及映射关系,且由于将数据库的关系型数据流抓换到对象型数据,不仅方便了程序员编程,也提高了查询数据库的数据的便捷性以及高效性。
实施例二:
图2示出了本发明第二实施例提供的数据查询装置,为了便于说明,仅示出了与本发明第二实施例相关的部分。
该数据查询装置可以是运行于系统内的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到这些系统中或者运行于这些系统的应用系统中,其中:
数据流获取模块21,用于在数据库获取关系型数据流。
作为本发明的另一个实施例,数据流获取模块21获取关系型数据流之前,该数据查询装置还包括:发送请求模块24,用于发送获取数据流请求至数据库。
桥接模块22逐个读取数据流获取模块21获取的关系型数据,并将读取的数据桥接为对象流。其中,该桥接模块22还包括读取单元221和填充单元222,该读取单元221用于逐个读取关系型数据流的数据;该填充单元222用于创建一个新对象,并将该关系型数据流的数据填充到该新对象。
作为本发明的另一个实施例,该数据查询装置还包括:数据流关闭模块25,用于在枚举完成后,关闭数据流。IEnumerator在枚举完成后,调用IEnumerator的Dispose()方法,自动关闭数据流。
映射模块23,用于将对象流映射为对象。
将获取的数据库中关系型数据流桥接为对象流,并将该对象流映射为对象,方便了程序员的编程,并且不需事先建模对象模型、关系模型以及映射关系才能使用,使用简单。
在本发明第二实施例中,桥接模块22将数据流获取模块21在数据库中获取关系型数据流桥接为对象流,并由映射模块23将上述对象流映射为对象。由于使用前不需建立对象模型、关系模型以及映射关系,使用简单,且将数据库的关系型数据流抓换到对象,方便了程序员编程,也提高了查询数据库的数据的便捷性以及高效性。
本发明实施例中,创建一个枚举器的实现,在数据库中获取关系型数据流,并逐个读取该关系型数据流的数据,以便将读取的数据桥接为对象流,再利用Linq to Object技术将对象流映射为对象。本发明不需事先建立对象模型、关系模型以及映射关系才能使用,使用简单;并且,将数据库的关系型数据流抓换到对象,不仅方便了程序员编程,也提高了查询数据库的数据的便捷性以及高效性。进一步地,在枚举成功或者枚举失败的情况下,都自动关闭数据流,从而保证了数据库连接的安全关闭。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种数据查询方法,其特征在于,所述方法包括步骤:
在数据库获取关系型数据流;
逐个读取关系型数据流的数据,并将读取的数据桥接为对象流;
将所述对象流映射为对象。
2.如权利要求1所述的方法,其特征在于,所述逐个读取关系型数据流的数据,并将读取的数据桥接为对象流的步骤具体为:
逐个读取关系型数据流的数据;
创建一个新对象,并将所述关系型数据流的数据填充到所述新对象上。
3.如权利要求1所述的方法,其特征在于,所述方法进一步包括下述步骤:
在枚举完成后,关闭数据流。
4.一种数据查询装置,其特征在于,所述装置包括:
数据流获取模块,用于在数据库获取关系型数据流;
桥接模块,用于逐个读取关系型数据流的数据,并将读取的数据桥接为对象流;
映射模块,用于将所述对象流映射为对象。
5.如权利要求4所述的装置,其特征在于,所述桥接模块还包括:
读取单元,用于逐个读取关系型数据流的数据,
填充单元,创建一个新对象,并将所述关系型数据流的数据填充到所述新对象上。
6.如权利要求4所述的装置,其特征在于,所述装置还包括:
数据流关闭模块,用于在枚举完成后,关闭数据流。
7.一种包含权利要求4至6所述的数据查询装置的系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105788516A CN102567315A (zh) | 2010-12-08 | 2010-12-08 | 一种数据查询方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105788516A CN102567315A (zh) | 2010-12-08 | 2010-12-08 | 一种数据查询方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102567315A true CN102567315A (zh) | 2012-07-11 |
Family
ID=46412756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105788516A Pending CN102567315A (zh) | 2010-12-08 | 2010-12-08 | 一种数据查询方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567315A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044089A1 (en) * | 2003-08-21 | 2005-02-24 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
CN1820245A (zh) * | 2003-08-21 | 2006-08-16 | 微软公司 | 用于基于项目的存储平台中的数据建模的系统和方法 |
CN101427249A (zh) * | 2006-03-20 | 2009-05-06 | 微软公司 | 具有对丰富数据类型的支持的可扩展查询语言 |
-
2010
- 2010-12-08 CN CN2010105788516A patent/CN102567315A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044089A1 (en) * | 2003-08-21 | 2005-02-24 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
CN1820245A (zh) * | 2003-08-21 | 2006-08-16 | 微软公司 | 用于基于项目的存储平台中的数据建模的系统和方法 |
CN101427249A (zh) * | 2006-03-20 | 2009-05-06 | 微软公司 | 具有对丰富数据类型的支持的可扩展查询语言 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391653A (zh) | 一种分布式NewSQL数据库系统及图片数据储存方法 | |
WO2020125219A1 (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN103425468B (zh) | 插件式软件集成方法及装置 | |
US20090037805A1 (en) | Annotation data filtering of computer files | |
CN102360292A (zh) | 一种基于插件化接入设备的管理系统 | |
CN101551818B (zh) | 一种单向多映射文件匹配方法 | |
CN100561476C (zh) | 一种基于asn类型对象的代码生成方法 | |
CN101126981A (zh) | 脚本命令注册方法、调用源程序代码的方法和装置 | |
CN103729184A (zh) | 一种软件组件组合构建方法 | |
CN104424159A (zh) | 软件项目文档生成方法和软件项目文档生成器 | |
CN109299074B (zh) | 一种基于模板化数据库视图的数据校验方法及系统 | |
US20100088350A1 (en) | Packaging system to facilitate declarative model-driven development | |
CN104102489A (zh) | 一种第三方数据库app构建系统及构建方法 | |
US7610299B2 (en) | Method of processing data | |
CN104298512A (zh) | 一种基于OSGi标准的功能组件式集成开发系统 | |
CN102915303A (zh) | 一种etl测试的方法和装置 | |
CN108241720B (zh) | 数据处理方法、装置和计算机可读存储介质 | |
CN102859489A (zh) | 可恢复的方法 | |
CN105573820A (zh) | 一种Xen虚拟机光盘热插拔方法 | |
CN110941422B (zh) | 代码自动生成方法、代码生成器及可读存储介质 | |
US8359323B2 (en) | Method and system for providing access to adapters | |
CN105573763A (zh) | 一种支持rtos的嵌入式系统建模方法 | |
CN102214092A (zh) | 一种软件开发辅助工具包 | |
CN102567315A (zh) | 一种数据查询方法、装置及系统 | |
CN116644122A (zh) | 数据事务处理方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120711 |