无法从ASP.net中的数据库获取价值

时间:2012-03-21 05:55:31

标签: asp.net sql

你能帮我解决这个问题吗?

我有这段代码,我希望将查询结果显示在我的第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]";

提前致谢

3 个答案:

答案 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() ;        
    }     
  }     
}