使用queryString时出错

时间:2015-02-08 20:48:45

标签: c# asp.net stored-procedures

当我尝试获取Url并将其传递给过程时 它没有通过

string ID = Request.QueryString["URL"];    
youtube y = new youtube();
y.URL = ID;
repCurrentVideo.DataSource = y.CurrentVideo();
repCurrentVideo.DataBind();
lblDetails.Text = "no details available about this video";

向我显示的错误说 过程或函数'currentvideo'需要参数'@URL',这是未提供的。 异常详细信息:System.Data.SqlClient.SqlException:过程或函数'currentvideo'需要参数'@URL',这是未提供的。

这是存储过程调用代码

public DataTable CurrentVideo() 
{
    CreateConnection();
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@URL", URL);
    SqlDataAdapter da = new SqlDataAdapter("currentvideo", conn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return dt;
}

1 个答案:

答案 0 :(得分:1)

您永远不会将SqlCommand(cmd)添加到数据适配器

尝试这样的事情:

cmd.Parameters.AddWithValue("@URL", URL);
da.SelectCommand = cmd;

CreateConnection();
SqlCommand cmd = new SqlCommand("currentvideo", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@URL", URL);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;

此外,虽然我们讨论的是SqlCommands的主题,但我认为最好将它们包含在using语句中,因为它们的类型为IDisposable

using (SqlCommand command = new SqlCommand("currentvideo", conn)) {
    ...
}

查看此链接以查看其外观:

http://www.dotnetperls.com/sqlcommand

修改 因此,根据您的URL,您正在寻找错误的查询字符串参数。您需要将ID的分配更改为:

string ID = Request.QueryString["ID"];