使用 Azure Function 通过存储过程从 SQL 获取数据

问题描述 投票:0回答:3

我想通过 Azure 函数运行一个存储过程,该函数从 SQL 表返回行。我收到响应 200 OK。 但我无法在输出窗口中打印这些行。下面是我的代码 -

#r "System.Data"
using System.Net;
using System.Data;
using System.Data.SqlClient;
using Newtonsoft.Json;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");


dynamic body = await req.Content.ReadAsStringAsync();
var e = JsonConvert.DeserializeObject<Person>(body as string);



//Connect to SQL
var cnnString  = "XXXX";

using (SqlConnection conn = new SqlConnection(cnnString))
{


    conn.Open();

    SqlCommand cmd = new SqlCommand("sp_GET_TOP_5_APP", conn);
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add(new SqlParameter("@USERID", e.param1));
    cmd.Parameters.Add(new SqlParameter("@SM", e.param2));
    cmd.Parameters.Add(new SqlParameter("@SY", e.param3));
    cmd.Parameters.Add(new SqlParameter("@EM", e.param4));
    cmd.Parameters.Add(new SqlParameter("@EY", e.param5));

    var reader = cmd.ExecuteReader();
}

return req.CreateResponse(HttpStatusCode.OK, "Ok");
}

public class Person
{
    public string param1 {get;set;}
    public string param2 {get;set;}
    public string param3 {get;set;}
    public string param4 {get;set;}
    public string param5 {get;set;}
}

请帮忙。预先感谢。

c# sql azure-functions
3个回答
0
投票

我可以使用下面的代码获取这些值。

 SqlDataReader reader = cmd.ExecuteReader();
    while(reader.Read())
    {
        var kk=reader.GetValue(0) + " - " + reader.GetValue(1) + " - " + reader.GetValue(2);
        log.Info(kk.ToString());

    }

0
投票

只需向 @pramoad 答案添加更多内容即可灵活地检索具有列名称的特定行数据

while (reader.Read())
   {
      var kk = reader.GetValue(reader.GetOrdinal("Column1")) + " - " + reader.GetValue(reader.GetOrdinal("Column2")) + " - " + reader.GetValue(reader.GetOrdinal("Column3")) + " - " + reader.GetValue(reader.GetOrdinal("Column4"));
      log.Info(kk.ToString());
  }

0
投票

此行之后:

var reader = cmd.ExecuteReader();

您可以执行 this 并使用 azure 函数中的 logger 触发控制台打印传入项目的列表:

        while (reader.Read())
        {
            _logger.LogInformation(reader[0].ToString());
        }
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.