更新SQL数据源中的查询参数

时间:2013-01-21 12:23:40

标签: c# asp.net sql-server

我有以下代码在完成某些条件后更新SQL数据源的查询参数的值。

SqlDataSource sdm = new SqlDataSource("<our connection string>", "SELECT  [Message Id] ,[To] ,[From] ,[Reply To] ,[Subject] ,[Message] ,[Date added] FROM [database].[dbo].[User Messages] where ([to]=@sid or [from]=@sid) and ([to]=@qid or [from]=@qid)  and [reply to]=@rid");

string user = Session["USERID"].ToString();
string to = Request["to"].ToString();
string from = Request["from"].ToString();
sdm.UpdateParameters["rid"].DefaultValue = Request["replyid"].ToString();
sdm.UpdateParameters["sid"].DefaultValue = user;
if (user == to)
  sdm.UpdateParameters["qid"].DefaultValue=from;
else
  sdm.UpdateParameters["qid"].DefaultValue= to;

sdm.Update();
sdm.DataBind();
Repeater1.DataSource = sdm;
Repeater1.DataBind();

它在sdm.UpdateParameters["rid"].DefaultValue = Request["replyid"].ToString();

显示NullReferenceException

rid已在查询字符串中设置为?rid=a

2 个答案:

答案 0 :(得分:1)

您希望使用Request.QueryString集合来获取rid参数:

sdm.UpdateParameters["rid"].DefaultValue = Request.QueryString["rid"];

使用Request的索引器可以使用QueryStringFormCookiesServerVariablesRequest.QueryString个集合中获取值直接使你的意图更加清晰。

答案 1 :(得分:0)

查询字符串不应该是?replyid=a而不是?rid=a?

似乎Request["replyid"]返回null,然后ToString()抛出异常。