2013-02-05 199 views
0

我有以下方法运行大约20个SQL查询。将结果返回给客户端的最佳方式是什么?返回多个sql查询结果 - C#

public int Results() 
{ 
    using (var conn = GetConnection()) 
      using (var cmd = new SqlCommand()) 
      { 
       cmd.Connection = conn; 
       cmd.CommandType = CommandType.Text; 
       cmd.CommandText = @"SELECT TOP 1 stdent_number from Students"; 

       conn.Open(); 
       var result = (int)cmd.ExecuteScalar(); 

       cmd.CommandText = @"SELECT TOP 1 class_number from Classes"; 
     var number = (int)cmd.ExecuteScalar(); 

       cmd.CommandText = @"SELECT TOP 1 table from Tables"; 
     var table = (int)cmd.ExecuteScalar(); 

       cmd.CommandText = @"SELECT TOP 1 suite from Suites"; 
     var suite = (int)cmd.ExecuteScalar(); 

       ..... 
       //I want to return result, number, table and suite so they can be populated on client 
     //What is the best way to return? Should I create IEnumerable and add values to it and return 
     //as IEnumerable or should these be returned all separately or as a dictionary? 
     //Also this is just an example in real time I have at least 15 values from sql queries that I  //want to return 

      } 
} 

回答

0

如果你不希望创建一个进程,然后尝试像下面

通过所有的在像下面的字符串变量查询...

string sql = "SELECT TOP 1 stdent_number from Students; SELECT TOP 1 class_number from Classes; SELECT TOP 1 table from Tables; SELECT TOP 1 suite from Suites"; 

之后尝试像下面..

using (SqlConnection conn = new SqlConnection(connection)) 
{ 
    var result,number,table; 
    conn.Open(); 
      Cmd = new SqlCommand(sql, conn); 
      SqlDataReader sqlReader = Cmd.ExecuteReader(); 
      while (sqlReader.Read()) 
      { 
       result = dr[0].ToString(); 
      } 

      sqlReader.NextResult(); 

      while (sqlReader.Read()) 
      { 
       number = dr[0].ToString(); 
      } 

      sqlReader.NextResult(); 

      while (sqlReader.Read()) 
      { 
       table = dr[0].ToString(); 
      } 

      sqlReader.Close(); 
      Cmd.Dispose(); 
      conn.Close(); 
} 

也可以尝试此链接:Return multiple set

+0

Pandian - 其实我们不是找谁g创建一个存储过程。有没有其他更好的方法来做到这一点? – NoviceMe

+0

@NoviceMe: - 我已经更新了我的代码与出proc ...试试这.. – Pandian

0

如果我理解你的问题正确,你需要如何将所有的成功查询数据从该函数传回客户端。 我建议您创建自己的类(DTO的[数据传输对象]),以将多个信息从您的函数传递给客户端。而不是使用返回Int类型的函数。