return语句中2个sql连接的语法

时间:2015-08-07 18:00:36

标签: c# .net

我有一个从1个连接表填充的网格视图。代码如下:

    private void BindGridContent()
    {
        DataTable dtInfo = GetContent();

        if (dtInfo.Rows.Count > 0)
        {
            // Bind Data
            uxNoticeGv.DataSource = dtInfo;
            uxNoticeGv.DataBind();

            // Show GridView
            uxNoticeGv.Visible = true;

            // Hide Grid Message
            uxGridMessageLbl.Visible = false;
        }
        else
        {
            // Hide GridView
            uxNoticeGv.Visible = false;

            // Display Grid Message
            uxGridMessageLbl.Visible = true;
        }

        uxGridViewHeader.SetGridViewHeader(uxNoticeGv, dtInfo.Rows.Count);
    }

我遇到的问题是当前表格没有对我在gridview中返回的某些字段进行说明。而是显示ID值。我也无法加入该表,除非我创建了一个链接服务器,我没有权限这样做。 (排除了链接服务器的答案)

下面是我的数据访问类(返回当前表的图层):

public static DataTable ViewLogSearch(string lineNumber, DateTime createdDateBegin, string detailPurposeOrFunction, string connectionTypeDesc, DateTime createdDateEnd, string machineServerConnection)
       {
           var sqlStatement = new StringBuilder();


       sqlStatement.Append(" SELECT");
       sqlStatement.Append("   ae.AccountEntryID, ae.LastUpdatedBy, ae.PurposeOrFunctionDialInDesc, ae.PhysicalLocationDesc, ");
       sqlStatement.Append("   ae.PurposeOrFunctionDialOutDesc, ae.PasswordChangeFrequency, ae.OtherLayerAuthenticationDesc, ");
       sqlStatement.Append("   ae.TypeOfConnectionID, ae.CreatedDate, ct.ConnectionTypeDesc,");
       sqlStatement.Append("   ae.LineNumber, ae.DetailPurposeOrFunction");
       sqlStatement.Append(" From");
       sqlStatement.Append("   dbo.AccountEntry ae");
       //Added After
       sqlStatement.Append(" Join");
       sqlStatement.Append("   dbo.ConnectionType ct");
       sqlStatement.Append(" on ae.TypeOfConnectionID = ct.ConnectionTypeID");
       sqlStatement.Append(" WHERE 1=1 ");

       // SQL parameter collection
      var sqlParams = new List<SqlParameter>();

       // Commented out excess logic but I am passing parameters         
       // Create sql command
       var sqlCmd = new SqlCommand(sqlStatement.ToString());

       // Add sql parameters to sql command
       sqlCmd.Parameters.AddRange(sqlParams.ToArray());

       // Execute sql
       return DBAccess.SQLServer.GetDataTable(DBAccess.SQLServer.GetConnectionString("AccountDB"), sqlCmd);
   }

我可以查询其他数据库。所以我想的是我会查询其他数据库并返回我感兴趣的字段。这将需要我有2个连接字符串。

有关如何为1个方法创建2个连接字符串的任何想法?请注意,联合表格不是我有兴趣引入的表格。我对这个问题的其他方法持开放态度。请提供伪代码。

1 个答案:

答案 0 :(得分:0)

由于您要加载DataTables,更好的方法可能是保留两个单独的函数 - 每个函数对应一个数据集。这与单一责任原则(SRP)保持一致,这是鼓励保留每个只完成一项工作的小功能。

第三个函数调用这两个函数,然后使用Linq加入数据。有关DataTable连接的更多信息,请参阅this SO post