Как получить данные, используя список и службу SQL в ASP.NET - PullRequest
1 голос
/ 07 октября 2019

У меня есть список идентификаторов. Это идентификатор ответа. Я держу в виде списка в приложении. Я просто хочу сделать запрос к SQL Server, чтобы получить ответы, которые соответствуют идентификаторам.

Нужно ли использовать цикл foreach в C #? Как я могу объединить результат в Dataatable или что-то? Мне нужна помощь по этому поводу.

Я хочу получить данные с помощью C # в проекте ASP.NET.

Список идентификаторов: <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 answer_id, answer 
FROM answers 
WHERE answer_id = 5

Результат:

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

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Предполагается, что вы используете ADO.NET, вам нужно создать класс, который содержит свойства answer_id и answer. В моем примере я веду себя так, как будто существует класс с именем Answer, который имеет эти значения. Затем я начинаю с создания класса DataAccess, такого как:

    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;
}
0 голосов
/ 07 октября 2019

Если вы используете ADO.NET, это потребует некоторых дополнительных шагов.

Вам нужно будет использовать Extension Helper, поскольку добавление List в качестве параметра является одним из ограничений ADO. NET, см .: Passing-list-int-as-параметр

Вы могли бы сделать

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

Но это действительно плохой и уродливый подход ... Самым «простым» способом будет использование Entity Framework, поскольку у вас уже есть список, в котором существует множество подходов для достижения того, что вы ищете, с помощью EF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...