簡體   English   中英

如何從SQL SELECT原始查詢返回結果?

[英]How to return results from SQL SELECT raw Query?

我的控制器類中有一個方法,應該從該方法內部的原始SQL查詢返回結果。 問題是我無法在應該返回多列結果的查詢中將返回的多列結果拉到列表中。

我知道問題與在讀取過程中如何添加到結果列表有關,但是我不確定如何正確構造此結構以返回多個值。

這是我目前的方法:

public IActionResult Search ([FromRoute]string input)
{
    string sqlcon = _iconfiguration.GetSection("ConnectionStrings").GetSection("StringName").Value;

    List<string> results = new List<string>();

    using (var con = new SqlConnection(sqlcon))
    {
        using (var cmd = new SqlCommand()
                             {
                                   CommandText = "SELECT u.UserID, u.User FROM [dbo].[Users] u WHERE User = 'Value';",
                                   CommandType = CommandType.Text,
                                   Connection = con
                             })
        {
            con.Open();

            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    results.Add(reader.GetString(0));
                }

                con.Close();

                return Ok(new Search(results));
            }
        }
    }
}

SQL查詢應該根據輸入的用戶返回UserID和用戶,但是,此處僅返回用戶。

有誰知道我缺少為此SQL查詢和方法返回多個列名稱的信息? 任何建議將不勝感激。

僅供參考,我在這里不能使用存儲過程,我沒有在該數據庫上創建SP的權限。

您可以為查詢的結果創建一個類

public class ClassForResults(){
    public int UserID { get; set; };
    public string User { get; set; }
}

public IActionResult Search ([FromRoute]string input)
{
    string sqlcon = _iconfiguration.GetSection("ConnectionStrings").GetSection("StringName").Value;

    List<ClassForResults> results = new List<ClassForResults>();

    using (var con = new SqlConnection(sqlcon))
    {
        using (var cmd = new SqlCommand()
                             {
                                   CommandText = "SELECT u.UserID, u.User FROM [dbo].[Users] u WHERE User = 'Value';",
                                   CommandType = CommandType.Text,
                                   Connection = con
                             })
        {
            con.Open();
            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    ClassForResults result = new ClassForResults();
                    result.UserID = reader.GetInt(0);
                    result.User = reader.GetString(1);
                    results.Add(result);
                }

                con.Close();

                return Ok(new Search(results));
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM