如何使用列表获取数据并 SQL 服务于 ASP.NET

How to get data using a list and SQL Serve in ASP.NET

我有一个 id 列表。这些是答案 ID。我在应用程序中持有一个列表。我只想向 SQL 服务器发出请求,以获得与 ID 匹配的答案。

我需要在 C# 中使用 foreach 循环吗?如何将结果合并到数据表或其他东西中?我需要一些帮助。

我想在 ASP.NET 项目中使用 C# 获取数据。

id 列表:<List>:

answer_id
---------
5
4
23
2
45
16

我想使用 C# 并在数据表中显示:(预期结果)

answer_id          answer
-------------------------------------
5                  It's true
4                  Maybe next time
23                 Man this is crazy
2                  Can i help you?
45                 Wtf..
16                 I can not believe..

如果匹配,我们的 select 查询必须 return 答案。在这个例子中,假设我们找到了所有答案。

简单查询一个结果:

SELECT answer_id, answer 
FROM answers 
WHERE answer_id = 5

结果:

  answer_id    answer
  -----------------------
    5          It's true

假设您正在使用 ADO.NET,您将需要创建一个 class 来保存 answer_id 的属性,然后回答。在我的示例中,我的行为就好像有一个名为 Answer 的 class 具有这些值。然后我开始创建一个 DataAccess class 像这样:

    public static class DataAccess
    {
        private static string reportConnectionString = "Data Source=;Initial Catalog=;Persist Security Info=;User ID=;Password=";

    public static class Answer
    {
       public int AnswerID {get; set;}
       public string Answer {get; set;}
    }

        public static bool GetRecords(int AnswerId, out List<Answer> lstAnswers, out string sMessage)
        {
            lstAnswers = new List <Answer>();
            AnswerID;
            sMessage = "";

            try
            {
                using(SqlConnection connection = new SqlConnection(reportConnectionString))
                {
                    connection.Open();

                    using (SqlCommand command = connection.CreateCommand())
                    {
command.CommandType = System.Data.CommandType.Text;
                        command.Parameters.AddWithValue("@id", AnswerID);

                        command.CommandText = @"select answer_id, answer from answers where answer_id = @id";

                        using (SqlDataReader reader = command.ExecuteReader())
                        {
                            if (reader.HasRows == false)
                            {
                                sMessage = "Could not find data";
                                return false;
                            }
                            while(reader.Read())
                            {
                                Answer answer= new Answer();

                                answer.answer_id= reader.GetInt32(reader.GetOrdinal("answer_id"));
                                answer.answer= reader.GetValue(reader.GetOrdinal("answer")).ToString();

                                // -- Adding single object to list 
                                lstAnswers.Add(log);
                            }
                        }
                    }
                }
                return true;
            }
            catch (Exception exc)
            {
                sMessage = exc.ToString();
                return false;
            }
        }
    }

如果您有一个 answer_id 的列表,您可以创建一个 foreach 循环来遍历列表并连接 answer_id 和要显示的答案。

foreach (var item in lstAnswers)
{
     txtTextBox.Text = item.answer_id + " " + item.answer;
}

如果您使用的是 ADO.NET,则需要一些额外的步骤。

您需要使用扩展助手,因为添加列表作为参数是 ADO.NET 的限制之一,请参阅:

你可以做一个

foreach(int x in myAnswerIdList){
//execute a sqlCommand for every number in the list and save it into an array
}

但这确实是一种糟糕而丑陋的方法...... 'easiest' 将使用 Entity Framework 的方式,因为您已经有了列表,他们存在许多方法来使用 EF 实现您正在寻找的东西。