你能帮我解决这个问题吗?
我有这段代码,我希望将查询结果显示在我的第3个文本框中但不显示。
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() ;
}
}
}
}
}
但是我只是使用这个查询而没有where条件我可以看到输出;
string query = "SELECT UserID FROM [IBSI].[sec].[Users]";
提前致谢
答案 0 :(得分:2)
我建议对此任务使用参数化查询。此外,从用户输入(如文本框/备忘录)生成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() ;
}
}
}
}
}
答案 1 :(得分:0)
逐步调试并验证您的查询是否返回结果。
答案 2 :(得分:0)
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() ;
}
}
}