您好,感谢您的阅读。
我有一个表单,用户可以将数据插入到我的数据库中,同时,用户唯一ID存储在同一个表中。
以下是我将Unique存储在标签中的代码:
MembershipUser user = Membership.GetUser();
string id = user.ProviderUserKey.ToString();
lblID.Text = id.ToString();
这就是我的数据库的样子/ ID,姓名,电子邮件,主题,消息,用户ID /
这是我的数据库代码:
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"));
}
}
非常感谢你的帮助。
答案 0 :(得分: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注入攻击..如果您不确定该值来自何处,则应使用sql参数来最小化sql注入的风险。
答案 1 :(得分: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"));
}
}
}
答案 2 :(得分:1)
using (var GetName = new SqlCommand("SELECT Name FROM Ticket WHERE UserID='" + lblID.Text + "'", conn))
使用这个答案,我希望它有所帮助。