#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