有个表:Info
三个字段:Id int(主键,自动增长),Name Varchar(50),Address Varchar(50)代码里有个查询功能:
public DataSet Search(int id)
{
string searchSql=string.Empty;
DataSet ds=new DataSet();
if(id!=0)
{
searchSql="select * from Info where Id=@Id";
}
using(SqlConnection con=new SqlConnection(cfg.AppSettings["ConnectionString"]))
{
SqlCommand cmd=con.CreateCommand();
cmd.CommandText=searchSql;
  cmd.Parameters.Add("@Id",SqlDbType.Int).Value=id;
SqlDataAdapter da=new SqlDataAdapter(searchSql,con);
try
{
con.Open();
da.Fill(ds);//到这步的时候,总是会catch
到,提示{"必须声明变量 '@Id'。" }
}
catch(Exception error)
{
Debug.WriteLine(error.ToString());
}
finally
{
con.Close();
}
return ds;
} }         

解决方案 »

  1.   


    if(id!=0) 

    searchSql="select   *   from   Info   where   Id=@Id"; 

    using(SqlConnection   con=new   SqlConnection(cfg.AppSettings["ConnectionString"])) 

    SqlCommand   cmd=con.CreateCommand(); 
    cmd.CommandText=searchSql; 
      cmd.Parameters.Add("@Id",SqlDbType.Int).Value=id; 
    SqlDataAdapter   da=new   SqlDataAdapter(searchSql,con); 
    ///////////////////////////////////
    完全没有你这样写的
      

  2.   

    searchSql="select   *   from   Info   where   Id=@Id"; 怎么能把@Id放在引号里呢?
    应该是searchSql="select   *   from   Info   where   Id="+@Id;如果报错的话把@Id转为字符型 
      

  3.   

    if(id!=0)
    {
    searchSql="select   *   from   Info   where   Id='"+id+"'";
      

  4.   

    searchSql="select   *   from   Info   where   Id=@Id"; 
    此处改为
    searchSql="select   *   from   Info   where   Id="+id; 
    试试
      

  5.   

    searchSql="select   *   from   Info   where   Id="+@Id
      

  6.   

    3楼歪解
    ID是INT类型,还加''干什么?
      

  7.   


    //改为。。string   searchSql=string.Empty; 
    DataSet   ds=new   DataSet(); 
    if(id!=0) 

          searchSql="select   *   from   Info   where   Id='"+ id +"'"; 

    using(SqlConnection   con=new   SqlConnection(cfg.AppSettings["ConnectionString"])) 

    SqlCommand   cmd=con.CreateCommand(); 
    cmd.CommandText=searchSql; 
    SqlDataAdapter   da=new   SqlDataAdapter(searchSql,con); 
      

  8.   

    我不要直接赋值,我要@id的
    继续up
      

  9.   

    哦,我知道了,是太粗心了
    SqlDataAdapter   da=new   SqlDataAdapter(searchSql,con); 
    改称
    SqlDataAdapter   da=new   SqlDataAdapter(cmd); 
    即可。