访问随机SQL服务器

时间:2013-09-06 12:36:09

标签: c# sql-server oracle

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

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

用户必须插入一些参数:

  1. IP地址和端口
  2. 登录和密码。
  3. 然后他将不得不选择数据库,然后他将不得不选择该表。

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

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

4 个答案:

答案 0 :(得分:2)

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

事实上,虽然我喜欢 Dapper,但我认为如果我在你的鞋子里,我只会使用ADO.NET,因为你可以将你的交互抽象为只使用接口:{{例如,1}}和IDbConnection

答案 1 :(得分:1)

一些注意事项: 我同意使用ADO.NET的想法。并回到SqlConnection和ODP.NET共享的接口。

一些想法:

IoC Link

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

我的猜测是你可以编写2个“Concretes”来实现相同的抽象类(参见上面的IoC链接)...其中抽象类具有“通用逻辑”......但是你有一个“安全值”如果2 RDBMS之间的某些内容完全相同。

但是因为你的结果是动态的,从某种意义上说你不会提前知道表/列是什么,DataTable也不是个坏主意。

另一个想法是看看这个“动态数据”项目。

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

但是我不知道(可能不是)是否有Oracle的实现,可能只是Sql Server。

答案 2 :(得分:1)

在开始自己编写之前,我建议您查看Microsoft企业库数据访问应用程序块;它建立在ADO.Net之上,但为应用程序提供了与数据库无关的API。我已经将它用于Sql Server和Oracle。

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

答案 3 :(得分:0)

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

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

我使用这个不变名称和这个连接字符串:

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

然后,我收到了过去的所有ADO.Net查询。