我有一个大学项目来建立新闻网站。在我的主页上我有一些链接 我试图通过此URL传递查询字符串
<a href="Content.aspx?Id=2&NewsId=6">
MyContent.aspx文件
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Content.aspx.cs" Inherits="Content" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%# Eval ("NewsDetails") %>
</ItemTemplate>
</asp:Repeater>
</asp:Content>
文件背后的代码
public partial class Content : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int _Id = Convert.ToInt32(Request.QueryString["Id"]);
int _NewsDetails = Convert.ToInt32(Request.QueryString["NewsDetails"]);
int _NewsId = Convert.ToInt32(Request.QueryString["NewsId"]);
//open your database connection
SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\MySite\\Pandheri\\App_Data\\Padheri.mdf;Integrated Security=True;User Instance=True");
conn.Open();
SqlCommand _cmd = new SqlCommand ("Select [NewsDetails],[Id] FROM Article",conn);
DataSet ds = new DataSet();
SqlDataAdapter adptr = new SqlDataAdapter(_cmd);
adptr.Fill(ds);
//close your database connection
Repeater1.DataSource = ds;
Repeater1.DataBind();
}
当我运行页面时,我从NewsDetails表中获取所有数据。
我的数据库。
{新闻表
标识,新闻分类
文章表
标识,NewsTitle,NewsDetails,NewSID的}
答案 0 :(得分:0)
好的,我假设Id
和NewsId
分别代表Id
表中的NewsId
和Article
。您通过查询字符串传递这些值,并希望从数据库中提取与这些ID相关的文章。
您正在阅读查询字符串。但是你没有对你正在阅读的价值做任何事情。您需要将它们传递给SQL查询。您的SqlCommand变为:
SqlCommand _cmd = new SqlCommand ("Select [NewsDetails],[Id] FROM Article WHERE [Id]=@Id AND [NewsId]=@NewsId",conn);
注意WHERE
子句。我们在SQL查询中设置参数。现在我们需要用查询字符串中的值填充这些参数。
_cmd.Parameters.AddWithValue("@Id", _Id);
_cmd.Parameters.AddWithValue("@NewsId", _NewsId);
现在,当SqlCommand运行时,您应该仅这两个ID定义的文章。