1

我正在设计的应用程序必须能够通过网络访问任何 MS 或 Oracle 数据库,必须读取数据库中的所有数据库,列出所有表。

最后,用户必须能够下载整个表格,并将其加载到应用程序中。

用户必须插入一些参数:

  1. IP地址和端口
  2. 登录名和密码。

然后他必须选择数据库,然后他必须选择表。

我通过互联网查找了几乎开箱即用的东西,而我发现的最佳结果实际上是 Dapper ( http://code.google.com/p/dapper-dot-net/ )

没有更好的图书馆可以满足我的需求吗?

4

4 回答 4

2

没有图书馆可以满足您的需求。您正在构建一个数据库浏览工具,例如 SSMS,因此 Dapper 只是以动态方式获取数据的一种手段。但是,您可以使用基本的 ADO.NET 轻松完成此操作。这DataTable是一个非常动态的结构,非常有能力满足您的需求。

事实上,虽然我喜欢IDbConnectionDapper,但我会争辩说,如果我站在你的立场上,我只会使用 ADO.NET ,因为你可以将交互抽象为只使用接口:IDbCommand例如。

于 2013-09-06T12:38:26.380 回答
1

几点说明:我同意使用 ADO.NET 的想法。回到 SqlConnection 和 ODP.NET 共享的接口。

一些想法:

国际奥委会链接

INFORMATION_SCHEMA

谷歌那个。这是针对不同 RDBMS 的标准。

我的猜测是,您可以编写 2 个实现相同抽象类的“混凝土”(请参阅​​上面的 IoC 链接)......其中抽象类具有“通用逻辑”......但是如果有的话,你就有一个“安全值” 2 个 RDBMS 之间的工作方式完全相同。

但由于您的结果将是动态的,从某种意义上说,您不会提前知道表/列是什么,因此 DataTable 不是一个坏主意。

一个不同的想法是看这个,“动态数据”项目。

http://msdn.microsoft.com/en-us/library/cc488545%28v=vs.100%29.aspx

但我不知道(也许没有)它是否曾经为 Oracle 实现过,可能只是 Sql Server。

于 2013-09-06T13:42:42.760 回答
1

在你自己动手之前,我建议你看看微软企业图书馆数据访问应用程序块;它建立在 ADO.Net 之上,但提供了一个与数据库无关的 API 供应用程序编写代码。我已经将它用于 Sql Server 和 Oracle。

http://msdn.microsoft.com/en-us/library/dn169621.aspx

于 2013-09-06T15:36:04.063 回答
0

我终于找到了使用 DbProviderFactory 的快乐。

我创建了一个创建连接字符串的类,它具有返回连接的不变名称的属性(例如:“System.Data.SqlClient”)。

我以这种方式使用这个不变的名称和这个连接字符串:

 this.Factory = DbProviderFactories.GetFactory(connexionStringBuilder.InvariantName);
 this.Connection = Factory.CreateConnection();
 Connection.ConnectionString = connexionStringBuilder.ConnexionString;

然后,我拥有过去的所有 ADO.Net 查询。

于 2013-09-12T08:33:32.657 回答