日期:2014-05-19  浏览次数:20816 次

关于存储过程查询的问题,请大虾们帮忙,小弟多谢了
public   DataTable   Info_Get_Xgwz1(string   title1)
        {

                DataTable   dt   =   new   DataTable();
                dt   =   SqlHelper.ExecuteDataset(Db.MyStaticConn(),   "Pr_keji_xgwz1 ",   title1).Tables[0];  
                return   dt;
        }
  上面方法传的title1是 "农业 ",调用存储过程是下面的:
存储过程是:
CREATE   PROCEDURE   Pr_keji_xgwz1
(
@title1   nvarchar(50)    
)
AS
select   top   3   *   from   tb_article   where   title   like   '%title1% '   and   shengHe   =   1   and   GetDate()   >   addTime   order   by     tjNew   asc,   newID   DESC
GO

  我在SQL中直接测试title   LIKE   '%农业% '时有三条数据的,可我在Info_Get_Xgwz1设置断点时显示dt中的却没有数据??这是什么原因呢??

------解决方案--------------------
我没用过.不过很显然,你的title1没有传进去.因为不管你用什么样的三方东西.存储过程的输入参数是必须给它的,而你那样调用并没有传,进去.你就不能自己写个方法么?
通过Command对象的parameters.AddWithValue( "@title1 ",title1)
大概是这个,可能拼写会有错误,用VS可以找到的
------解决方案--------------------
public DataTable Info_Get_Xgwz1(string title1)
{
SqlCommand sql = new SqlCommand( "Pr_keji_xgwz1 ", Db.MyStaticConn);
sql.CommandType = CommandType.StoredProcedure;
sql.Parameters.Add(new Parameters( "@title1 ",类型));
sql.Parameters[ "title1 "].value=title1l
try
{
sql.ExecuteNonQuery();
}
catch
{
return false;
}
return true;
}
没在VS上验证的,大概是这样,你试看看