创建自定义的驱动系统。数据。常见的
-
20-09-2019 - |
题
背景:
我们C#应用程序生成和执行查询的几类型的数据库(Oracle、SQL服务器,MySQL),但需要来到也适用它们的专有格式的文件。
- 空间使用到现在为止被系统。数据。常见的。
- 查询我们需要应用是非微不足道(嵌套的选择,别名,substring方法和串连接)
我们最初转化为内容的专利文件为CSV,对于其中存在着驱动器 {微软文字驱动(*.txt;*.csv)}.然而,客户需要,没有临时文件产生的,一切都应该发生在存储器。
创建一个ODBC driver查询该文件直接似乎过时要求。因此,我们正在考虑创建一个司机(可能ODBC),其中我们将"嵌入"的源码ODBC driver.内,驱动,我们可以载的内容CSV文件中的"在存储器"的数据库,然后前进的查询内ODBC driver.
我的问题:
- 这不会解决方案似乎是可行的?
- 我们应该从哪里开始,以便创造一个ODBC driver从头开始?
感谢
解决方案
如果使用源码作为后端的可能性,我真的不能看为什么你不能使用ADO.净提供者你源码数据库喜欢 系统。数据。源码.
从你的意见,我认为你是有效的使用ODBC ADO.净提供者的所有数据库连接(系统。数据。Odbc)。如果你需要保持相同的方案,那么一个自定义ODBC提供商的方式去(但它是简单的C地发展,并相当痛苦,我相信).
另一个方向走就可以添加的第三个参数的数据库(第二被SQL和连接string):ADO.净提供者可使用(喜欢它 应该是完成结构的文件, 见 providerName
属性)。这种方法可以使用任何ADO.净提供者。
然后你可以包裹的源码提供者进入你自己的定义,ADO.净提供者,这可能包括产生和人口的源码数据库。利用这一解决方案:纯粹的管理。网。
其他提示
客户的要求是奇怪的。总是会有文件的参与,你们阅读一个文件。
如果他们想要他们的东西在存储器(又一个奇怪的客户)把Csv到RAM盘:http://members.fortunecity.com/ramdisk/RAMDisk/ramdriv001.htm
建设和ODBC驱动是一个非繁琐的承诺,如果你关心的性能和稳定性。
我认为你的解决方案是耗费时间。你可以找到现有的解决方案,为什么你们试图要做。这里有几个候补委员。
为什么不试试皇宫的文本/csv的文件?
- http://www.codeproject.com/KB/linq/LINQtoCSV.aspx
- http://blogs.msdn.com/ericwhite/archive/2008/09/30/linq-to-text-and-linq-to-csv.aspx
这两个解决方案是在存储器。
另一个想法是,你可以出口文件xml而不是csv或文本(我总是喜欢出口成xml当我需要的过程在我的代码)。比你使用System.Xml 或皇宫Xml执行操作。
如果你仅仅是限制不建立临时文件,你可以尝试使用在存储器模式源码.这里有一个样本的连接串为它(来源):
Data Source=:memory:;Version=3;New=True;
我认为,这是比较简单的建立完全成熟的提供者。$