Mahmoud Zakal
Mahmoud Zakal

Reputation: 128

Error when Using queryString

when I try to get the Url and pass it to procedure it didn't passed

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";

an error shown to me said Procedure or function 'currentvideo' expects parameter '@URL', which was not supplied. Exception Details: System.Data.SqlClient.SqlException: Procedure or function 'currentvideo' expects parameter '@URL', which was not supplied.

and this is the stored procedure invoking code

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;
}

Upvotes: 0

Views: 57

Answers (1)

Simon C
Simon C

Reputation: 9508

You are never adding the SqlCommand (cmd) to your data adapter

try something like this:

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

or

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;

Also, while we are on the topic of SqlCommands, I believe it is best to wrap them in a using statement as they are of type IDisposable.

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

Check out this link to see what it looks like:

http://www.dotnetperls.com/sqlcommand

Edit: So based on your URL, you are looking for the wrong query string parameter. You need to change the assignment of ID to this:

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

Upvotes: 1

Related Questions