Извлечение отдельных столбцов из ADO.NET Результирующий набор

#c# #sql #ado.net

#c# #sql #ado.net

Вопрос:

У меня есть веб-сайт, который настроен на запрос к базе данных имени пользователя, а затем заполняет Session[] переменные информацией пользователя. Когда я запрашиваю, используя хранимую процедуру сервера, я получаю обратно всю строку. Как я могу разделить строку и проанализировать ее так, чтобы каждый столбец анализировался отдельно?

Мой код для кнопки:

 protected void Button4_Click(object sender, EventArgs e)
{
    string strConn = WebConfigurationManager.ConnectionStrings["TicketsConnectionString"].ConnectionString;
    SqlConnection myConnection = new SqlConnection(strConn);
    //Search button
    string sqlText = ("select * from [dbo].[User]");






    SqlCommand myCommand = new SqlCommand(sqlText,myConnection);
    myCommand.CommandType = CommandType.Text;
    myConnection.Open();
    SqlDataReader objReader;
    objReader = myCommand.ExecuteReader();

    objGrid.DataSource = objReader;
    objGrid.DataBind();
}
  

Обновить

Я обновил его до string sqlText = ("select 'UserID', 'FirstName' from [dbo].[User] where UserID='" txtTest.Text "' and Password='" txtPass.Text "'");

Но теперь я получаю следующий столбец Column1 Column2 Идентификатор пользователя FirstName

Комментарии:

1. существует много способов запросить базу данных с помощью ASP.net , поэтому вам придется добавить больше деталей и, возможно, немного кода, прежде чем вы получите что-нибудь полезное.

Ответ №1:

Чтобы прочитать значение столбца, используйте это:

  avar = row["colname"];
  

Комментарии:

1. Я не думаю, что с запросом в примере что-то не так, и вы используете databind, поэтому вам не нужно обращаться к строке.

Ответ №2:

Вместо:

 string sqlText = ("select * from [dbo].[User]");
  

Использовать:

  string sqlText = ("select username from [dbo].[User]");
  

Это вернет только тот столбец, который вам нужен.

* ОБНОВИТЬ *

Выполнение серии запросов для всех свойств определенно не является хорошим вариантом. Вы можете выбрать все нужные вам столбцы, разделив их запятой следующим образом:

  string sqlText = ("select username, otherfield, evenAnotherField from [dbo].[User]");
  

Затем вы можете использовать индексатор SqlDataReader для получения необходимых вам значений:

   var username = objReader["username"];
  

Комментарии:

1. Проблема в том, что у меня есть около 8 различных переменных сеанса, которые необходимо заполнить. Должен ли я просто использовать 8 разных запросов или есть более простой способ?

2. Я обновил его до string SQLText = («выберите ‘userId’, ‘FirstName’ из [dbo]. [User] где userId='» txtTest.Text «‘ и Password = ‘» txtPass.Text «‘»); Но теперь я получаю следующий столбец Column1 Column2 userId FirstName