2016-01-23 2 views
-1

Я получаю сообщение об ошибке «должен объявить скалярную переменную @IdAlbum». Я уже прошел аналогичные должности по этой теме, но это не помогает. Может ли кто-нибудь взглянуть на код ниже? Когда я использую параметры команды, это дает мне ошибку. Если я не использую параметры команды, он отлично работает. Я добавил комментарии в код, чтобы указать, где проблема.Исключение | должен объявить скалярную переменную @IdAlbum

public DataSet databind() 
    { 
     DataSet ds = new DataSet(); 
     string con_str = ConfigurationManager.ConnectionStrings["con_nc"].ConnectionString; 
     SqlConnection con = new SqlConnection(con_str); 
     try 
     { 

      con.Open(); 

      string albumId = Request.QueryString["AlbumId"].Trim(); 
      this.albumName = Request.QueryString["AlbumName"]; 

      //getting the count of the pictures from DB and assigning it to pagesize so that all pictures of single album come in 1 page only. 

      string photoCountQuery = "select count(*) from gallery_photos where [email protected]"; // THIS WORKS FINE 


      SqlCommand picCount = new SqlCommand(photoCountQuery, con);// THIS WORKS FINE 
      picCount.Parameters.AddWithValue("@albumID", albumId);// THIS WORKS FINE 
      int photoCount = Convert.ToInt16(picCount.ExecuteScalar());// THIS WORKS FINE 

      int start = (int)ViewState["start"];// THIS WORKS FINE 
      ViewState["pagesize"] = photoCount;// THIS WORKS FINE 

      //string query = "select * from gallery_photos where AlbumId='" + albumId + "'"; //// THIS WORKS FINE 
      string query = "select * from gallery_photos where [email protected]";// THIS is the problem. It does not work when i use command paramters 
      SqlCommand cmd = new SqlCommand(query, con); 
      cmd.Parameters.AddWithValue("@IdAlbum", albumId); 
      SqlDataAdapter da = new SqlDataAdapter(query, con); 

      da.Fill(ds, start, (int)(ViewState["pagesize"]), "gallery_photos"); 


     } 
     catch (Exception ex) 
     { 
      ExceptionUtility.LogException(ex, "Exception in " + Path.GetFileName(Page.AppRelativeVirtualPath).ToString()); 
      Context.ApplicationInstance.CompleteRequest(); 
     } 
     finally 
     { 
      con.Close(); 
     } 
     return ds; 
    } 

ответ

2

Посмотрите на это: https://msdn.microsoft.com/en-us/library/ebxy9a8b(v=vs.80).aspx

Вы делаете это неправильно, вы должны использовать DataAdapter для заполнения недостающих параметров.

Посмотрите также на этот вопрос и ответ, он обеспечивает хорошее объяснение: c# Using Parameters.AddWithValue in SqlDataAdapter

+0

Спасибо. Это сработало. – Azfar

Смежные вопросы