C# 从数据库中获取数据,其中UserID等于asp:label中的值

C# 从数据库中获取数据,其中UserID等于asp:label中的值,c#,asp.net,sql,C#,Asp.net,Sql,您好,谢谢您的阅读 我有一个表单,用户可以将数据插入我的数据库,同时,用户的唯一ID存储在同一个表中 以下是我将唯一项存储在标签中的代码: MembershipUser user = Membership.GetUser(); string id = user.ProviderUserKey.ToString(); lblID.Text = id.ToString(); 这就是我的数据库的外观/ID、名称、电子邮件、主题、消息、UserID/ 以下是我的数据库插入代码: SqlConnecti

您好,谢谢您的阅读

我有一个表单,用户可以将数据插入我的数据库,同时,用户的唯一ID存储在同一个表中

以下是我将唯一项存储在标签中的代码:

MembershipUser user = Membership.GetUser();
string id = user.ProviderUserKey.ToString();
lblID.Text = id.ToString();
这就是我的数据库的外观/ID、名称、电子邮件、主题、消息、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的数据库中获取数据

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"));
                    }
                }
正如您在下面的代码中所看到的,我在查找加载数据时遇到了一个问题,其中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"));
                    }
                }
非常感谢您的帮助。

更改此行

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

但是,此查询容易受到sql注入攻击。。如果不确定该值来自何处,则应使用sql参数将sql注入的风险降至最低。

更改此行

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


但是,此查询容易受到sql注入攻击。。如果不确定值来自何处,则应使用sql参数将sql注入的风险降至最低。

您需要将
lblID.Text
传递到sql查询。使用此参数化查询可避免


您需要将
lblID.Text
传递给SQL查询。使用此参数化查询可避免

使用这个答案,我希望它有帮助


使用这个答案,我希望它能有所帮助。

非常感谢,工作得很好。“如果您不确定值来自何处,您应该使用sql参数来最小化sql注入的风险。”FTFY。非常感谢,工作得很好。“如果您不确定该值来自何处,则应使用sql参数将sql注入的风险降至最低。”FTFY。
using (var GetName = new SqlCommand("SELECT Name FROM Ticket WHERE UserID='" + lblID.Text + "'", conn))