2014-02-05 3 views
0

Привет и спасибо за чтение.Получить данные из базы данных Где UserID равен значению из asp: label

У меня есть форма, где пользователи могут вставлять данные в мою базу данных и в то же время, уникальный идентификатор пользователей хранится в одной таблице.

Вот код, где я храню единственный в этикетке:

MembershipUser user = Membership.GetUser(); 
string id = user.ProviderUserKey.ToString(); 
lblID.Text = id.ToString(); 

Это как моя база данных выглядит/ID, Имя, Email, Тема, Сообщение, UserID/

Вот мои вставки в код базы данных:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString); 
    conn.Open(); 

    string Name = txtName.Text; 
    string Email = txtEmail.Text; 
    string Subject = ddlSubject.SelectedValue; 
    string Message = txtMessage.Text; 
    string UniqueID = lblID.Text; 

    string query = "INSERT INTO Ticket(Name, Email, Subject, Message, UserID)" + "Values('" + Name + "', '" + Email + "', '" + Subject + "', '" + Message + "', '" + UniqueID + "')"; 
    using (SqlCommand com = new SqlCommand(query, conn)) 
    { 
     com.ExecuteNonQuery(); 
    } 

Что у меня возникли проблемы с, чтобы получить данные из базы данных, где UserID = lblID.text.

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

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString); 
       conn.Open(); 

       using (var GetName = new SqlCommand("SELECT Name FROM Ticket WHERE UserID=''", conn)) 
       using (SqlDataReader dr = GetName.ExecuteReader()) 
       { 
        if (dr.Read()) 
        { 
         lblGetData.Text = dr.GetString(dr.GetOrdinal("Name")); 
        } 
       } 

Большое спасибо за помощь.

ответ

1
using (var GetName = new SqlCommand("SELECT Name FROM Ticket WHERE UserID='" + lblID.Text + "'", conn)) 

Используйте этот ответ, я надеюсь, что это помогает.

3

Изменить эту строку.

using (var GetName = new SqlCommand("SELECT Name FROM Ticket WHERE UserID=''", conn)) 

Для

using (var GetName = new SqlCommand("SELECT Name FROM Ticket WHERE UserID='" + lblID.Text + "'", conn)) 

Этот запрос склонен к SQL Injection атаки, хотя .. если вы не уверены в том, где стоимость приходит, вы должны использовать параметр SQL, чтобы свести к минимуму риск внедрения sql.

+0

Большое спасибо, Worked Perfect. –

+1

«, если вы не знаете, откуда это значение,, вы должны использовать параметр sql, чтобы свести к минимуму риск SQL-инъекции». FTFY. – aquinas

1

Вам необходимо передать lblID.Text в SQL-запрос. Используйте этот параметризованный запрос, чтобы избежать SQL Injection

using (var GetName = new SqlCommand("SELECT Name FROM Ticket WHERE UserID = @UserID", conn)) 
{ 
    GetName.Parameters.AddWithValue("@UserID", lblID.Text); 
    using (SqlDataReader dr = GetName.ExecuteReader()) 
    { 
     if (dr.Read()) 
     { 
      lblGetData.Text = dr.GetString(dr.GetOrdinal("Name")); 
     } 
    } 
} 
Смежные вопросы