当我尝试获取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;
}
答案 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"];