Не могу получить значение из базы данных в ASP.net - PullRequest
0 голосов
/ 21 марта 2012

Привет, вы можете мне помочь с этим ??

У меня есть этот код, и я хочу отобразить результат моего запроса в третьем текстовом поле, но он не отображается.

string query = "SELECT UserID FROM [IBSI].[sec].[Users] WHERE UserName = '" + TextBox2.Text + "'";

if (query != null)
{
  using (SqlConnection conn = new SqlConnection(connect))
  {
    using (SqlCommand cmd = new SqlCommand(query, conn))
    {

      conn.Open();
      SqlDataReader rdr = cmd.ExecuteReader();
      if (rdr.HasRows)
      {
        while (rdr.Read())
        {

         TextBox3.Text=rdr["UserID"].ToString() ;


        }
      }
    }
  }
}

Но тогда я просто использую этот запрос без условия где я могу видеть вывод;

string query = "SELECT UserID FROM [IBSI].[sec].[Users]";

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 21 марта 2012

Я бы порекомендовал использовать параметризованные запросы для этой задачи. Кроме того, генерация SQL-кода из пользовательского ввода (например, текстовые поля / заметки) подвержена SQL-инъекциям (пользователь может ввести любой SQL-код в текстовое поле, которое может повредить данные базы данных), поэтому было бы здорово проверить входные данные.

Пример использования параметра выглядит следующим образом:

string query = "SELECT UserID FROM [IBSI].[sec].[Users] WHERE UserName = @1";
if (query != null)
{
    using (SqlConnection conn = new SqlConnection(connect))
    {
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            SqlParameter p1 = new SqlParameter("@1", TextBox2.Text);
            cmd.Parameters.Add(p1);
            conn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    TextBox3.Text=rdr["UserID"].ToString() ;
                }
            }
        }
    }
}
0 голосов
/ 21 марта 2012

Ey Bert измените ваш код следующим образом:

string query = "SELECT UserID FROM [IBSI].[sec].[Users] WHERE UserName= '"+TextBox2.Text+ "'";       

if (query != null)     
{     
  using (SqlConnection conn = new SqlConnection(connect))     
  {     
    using (SqlCommand cmd = new SqlCommand(query, conn))     
    {   
      conn.Open();     
      int UserId;
      UserId=Convert.ToInt32(cmd.ExecuteScalar());
      TextBox3.Text=UserId.ToString() ;        
    }     
  }     
}     
0 голосов
/ 21 марта 2012

Пройдите через отладчик и убедитесь, что ваш запрос возвращает результаты.

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