public Article GetArticleByTitle(string title){
  
           Article article = new Article();
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings ["SystemDSN"].ConnectionString);
           
           cn.Open();
           SqlCommand cmd = new SqlCommand("select * from Articles where title=@title", cn);
           cmd.Parameters.Add("@title", SqlDbType.NVarChar);
           cmd.Parameters["@title"].Value = title;            using (SqlDataReader dr = cmd.ExecuteReader())
            {
               while (dr.Read())
               {
                   article.Title = dr["Title"].ToString();
                   article.Contents = dr["Contents"].ToString();
                   article.PubData = (DateTime)dr["PubData"];
               }
               if (dr == null)
               {
                   dr.Close();
               }
            }
            return article;
       }请高手看看这段代码需要怎样改????提示title没有值,应该怎样赋值????

解决方案 »

  1.   

    你打断点查看一下是否给title参数值了
      

  2.   

    SqlCommand cmd = new SqlCommand("select * from Articles where title=@title", cn); 
              cmd.Parameters.Add("@title", SqlDbType.NVarChar); 
              cmd.Parameters["@title"].Value = title; 就是这里不知道写的对不对,试过断点没有值
    那有没有别的方法,必须用ADO.NET方法的
      

  3.   


    SqlCommand cmd = new SqlCommand("select * from Articles where title=@title", cn); 
              cmd.Parameters.Add("@title", SqlDbType.NVarChar); 
              cmd.Parameters["@title"].Value = title;  改成SqlCommand cmd = new SqlCommand("select * from Articles where title='" + title + "'", cn);
      

  4.   

    cmd.Parameters.Add("@title", SqlDbType.NVarChar); 
    cmd.Parameters["@title"].Value = title; 
    改为
    SqlParameter parm=new SqlParameter("@title", SqlDbType.NVarChar); 
    parm.Value = title; 
    cmd.Parameters.Add(parm);不要被别人误道
      

  5.   

    调用GetArticleByTitle函数时,给title赋值了吗
      

  6.   

    真正的错误原因是:
     
        cmd.Parameters.Add("@title", SqlDbType.NVarChar);  没有指定参数的长度.改: cmd.Parameters.Add("@title", SqlDbType.NVarChar,50);