2016-04-15 67 views
0

如何在下面的c#代码中将query1列Display Group用于查询2。如何将Sql查询中的一列用于C#中的另一个sql查询中代码

我已经通过????符号表示了我想要放置query1列的位置。

public class PopulateRangeInStore 
{ 

    [Test] 
    [Category(TestType.NeedsDeployment)] 
    public void PopulateRangeInStores() 
    { 
     ExecutePopulateRangeInStoreProcedure("csg_sp_populate_RangeInStore"); 

     using (var connection = IKBDatabaseConnection.GetConnectionForIKBTFS()) 
     { 
      string query1 = "SELECT count (distinct DESC7) FROM ix_spc_planogram (NOLOCK) WHERE dbstatus= 1"; 
      string query2 = "SELECT count (distinct EquipmentType) FROM Csg_Range_In_Store (NOLOCK) WHERE DisplayGroup = '" + ?????+ "'"; 
      var command1 = new SqlCommand(query1, connection); 
      var command2 = new SqlCommand(query2, connection); 
      //string output = " "; 
      //var = " "; 
      //var actualDG = " "; 
      var actualDG = " "; 
      var expectedDG = " "; 
      var dataReader1 = command1.ExecuteReader(); 
      var dataReader2 = command2.ExecuteReader(); 
      if (dataReader1.Read()) 
      { 
       DataTable dt = new DataTable(); 
       dt.Load(dataReader1); 
       expectedDG = dt.Rows.Count.ToString(); 
      } 

      if (dataReader2.Read()) 
      { 
       DataTable dt = new DataTable(); 
       dt.Load(dataReader2); 
       actualDG = dt.Rows.Count.ToString(); 
      } 
      actualDG.Should().Be(expectedDG); 



     } 

    } 


    private void ExecutePopulateRangeInStoreProcedure(string storedProcedure) 
    { 
     using (var connection = IKBDatabaseConnection.GetConnectionForIKBTFS()) 
     { 
      using (SqlCommand cmd = new SqlCommand(storedProcedure, connection)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.Add("@ix_sys_error", SqlDbType.Int).Value = 0; 

       cmd.CommandTimeout = 0; 
       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 





} 
+0

我看不到你的代码中你用“????”表示的位置,符号 – chameleon86

+0

@ chameleon86我刚才编辑的可以....现在你可以在查询2中看到它吗? –

+0

1)尝试像这样进行连接会让您打开SQL注入(可能无论如何)。 2)您正在尝试执行程序化连接,在服务器上进行连接并报告结果几乎总是会更快。 3)第一个查询输出的唯一列是一个计数,这几乎从来都不是正确的参数。 –

回答

0

你可以通过创建一个子查询来解决这个问题。

string query2 = "SELECT count (distinct EquipmentType) FROM Csg_Range_In_Store (NOLOCK) WHERE DisplayGroup in (" + query2 +")";
+0

@Sumit Dwivedi这是为你工作吗? – mbadeveloper

相关问题