【问题标题】:Database join - results shown in gridview数据库连接 - gridview 中显示的结果
【发布时间】:2011-12-14 20:16:03
【问题描述】:

我在三个不同的服务器上有三个数据库,我需要加入这些数据库并在 asp:gridview 中显示结果。由于 asp:SqlDataSource 使用到一个数据库的连接字符串,我现在有查询工作,但我的问题是我为其他两个数据库指定了服务器、数据库和表。

  1. 如何修改我的查询以使用连接字符串到所有 数据库(C#、asp 示例)?
  2. 是在 aspx 文件中查询还是在 cs 文件中查询?
  3. 如果我在 cs 文件中进行连接,如何将结果附加到 gridview?离开此页面并返回后,数据可能会有所不同。

我当前的<asp:SqlDataSource> 代码是这个-

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT DISTINCT A.batchname AS IndexBatchNumber, a.clientkey, a.packagetrackingid, a.statusflag, f.Name AS Client, SELECT GroupValue FROM FSDev.dbo.ClientGroup WHERE ClientKey = a.clientkey AND GroupCode = 'TIME ZONE') AS Timezone, (SELECT fc.special_instr FROM SQL2.sysdba.FC_SLX_TEST.FC_PKG_TRKG fc WHERE
fc.fc_Pkg_trkgid = a.PackageTrackingID) AS RushFunding FROM BatchExport a, InvoiceExport b, FSDev.dbo.Clients f WHERE a.batchname = b.batchname AND a.clientkey = f.ClientKey AND a.statusflag = 1 "></asp:SqlDataSource>

【问题讨论】:

  • 数据库是否在不同的服务器上?它们在不同环境中有不同的名称吗?
  • 是的,它们位于不同的服务器上,并且名称不同......开发者使用 dev,生产者使用 prod 作为名称的一部分。
  • 您是否考虑过在数据库端创建一个视图来连接来自不同来源的所有三个表并从一个来源返回数据?
  • 这些问题缺少很多信息。是否所有三个数据库都为所讨论的表共享相同的架构?
  • 没有架构不同,但它们有共同的索引,这就是我可以进行连接的原因。

标签: asp.net c#-4.0 gridview


【解决方案1】:

我已经能够通过做两件事来解决这个问题。由于数据库都是 MSsql,我使用链接功能将它们连接在一起。这样我只需要一个连接字符串。为了在迁移到生产服务器时不必更改 SQL 代码,我让 DBA 为我的所有查询创建存储过程。这样我只需要更改连接字符串。

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多