从QueryString ASP.NET检索表

时间:2016-04-17 11:21:43

标签: c# asp.net query-string

我正在创建一个简单的查询,以根据文本框中保存的ID获取一行数据。但是,它不是检索信息,也不是错误的。

我有一个文本框,其中填充了一个在URL中传递的查询字符串参数。这是有效的,并在页面上显示确切的ID。

我正在使用它将其余信息存入相关领域。

C#

"sessid": "PfG79I6elMMYln8nyftReLOY0d5So7O0C3LRIdbOeMo",
  "session_name": "SESS74282c529439441e18b575b0e6fe308f",
  "user": {
    "uid": 0,
    "hostname": "2a02:8388:1580:2500:7b:3322:23a4:c902",
    "roles": {
      "1": "anonymous user"
    },
    "cache": 0,
    "timestamp": 1460891635
  }
}

ASP.NET

   protected void Page_Load(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True");
            con.Open();
            try
            {

                SqlDataAdapter sda = new SqlDataAdapter("Select Recipe_Name, Recipe_Description, Recipe_Instructions FROM Recipe Where Recipe_ID= @recipeid", con);
                sda.SelectCommand.Parameters.Add("@recipeid", SqlDbType.Int).Value = RecipeID.Text;
                DataTable dt = new DataTable();
                sda.Fill(dt);

                if (dt.Rows.Count > 0)
                    nameTxt.Text = dt.Rows[0][0].ToString();
                descriptionTxt.Text = dt.Rows[0][1].ToString();
                instructionsTxt.Text = dt.Rows[0][2].ToString();

                dt.Clear();

            }
            catch (Exception ex)
            {

            }

            con.Close();
        }

有人可以帮我解决这个问题吗?我哪里出错了,我需要添加或更改什么。谢谢。

3 个答案:

答案 0 :(得分:1)

它没有错误,因为您捕获所有异常并且不执行任何操作。

此外,您很容易受到该代码的SQL注入攻击(正如评论中正确指出的那样)。

您应该使用相对路径来定位数据库文件(在部署时会中断),您应该在Web.config文件中放置类似的配置信息。

答案 1 :(得分:0)

protected void Page_Load(object sender, EventArgs e)
        {
            string ID = Request.QueryString["id"];
            RecipeID.Text = ID;

            SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True");
            con.Open();
            try
            {

                SqlDataAdapter sda = new SqlDataAdapter("Select Recipe_Name, Recipe_Description, Recipe_Instructions FROM Recipe Where Recipe_ID= @recipeid", con);
                sda.SelectCommand.Parameters.Add("@recipeid", SqlDbType.Int).Value = RecipeID.Text;
                DataTable dt = new DataTable();
                sda.Fill(dt);

                if (dt.Rows.Count > 0)
                    nameTxt.Text = dt.Rows[0][0].ToString();
                descriptionTxt.Text = dt.Rows[0][1].ToString();
                instructionsTxt.Text = dt.Rows[0][2].ToString();

                dt.Clear();

            }
            catch (Exception ex)
            {

            }

            con.Close();
        }

答案 2 :(得分:0)

sda.SelectCommand.Parameters.Add(" @ recipeid",SqlDbType.Int).Value = Request.QueryString [" id"];