关于存储过程查询的问题,请大虾们帮忙,小弟多谢了
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上验证的,大概是这样,你试看看