日期:2014-05-18  浏览次数:20410 次

读取Acess数据库,奇怪问题。
sql= "select   count(id)   from   news   where   (title   like   '* "+keyword+ "* '   or   content   like   '* "+keyword+ "* ') ";

这句断点以后得到sql= "select   count(id)   from   news   where   title   like   '*1* '   or   content   like   '*1* ') ";
得到结果2

可是用OleDbDataReader无法得到结果,换了语句也不行,以下是代码:
private   static   int   getcount()
{
string   constr= "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "+System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings[ "cs "])+ "; ";
OleDbConnection   conn=new   OleDbConnection(constr);
string   sql;
if(sort== "0 ")
{
sql= "select   count(id)   as   re   from   news   where   (title   like   '* "+keyword+ "* '   or   content   like   '* "+keyword+ "* ') ";
}
else
{
sql= "select   count(id)   as   re   from   news   where   (title   like   '* "+keyword+ "* '   or   content   like   '* "+keyword+ "* ')   and   news.sortid= "+sort;
}
OleDbCommand   cmd=new   OleDbCommand(sql,conn);
conn.Open();
OleDbDataReader   dr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
if(dr.Read())
{
int   re=Convert.ToInt32(dr[ "re "].ToString());///这个地方得不到2这个值,总是0
dr.Close();
return   re;
}
conn.Close();
return   0;
}

------解决方案--------------------
可能是因爲CommandBehavior.CloseConnection,
OleDbDataReader dr=cmd.ExecuteReader();試試

------解决方案--------------------
strig Query= "select count(id) as re from news where title like '% "+keyword+ "% ' or content like '% "+keyword+ "% ' ";
------解决方案--------------------
如果是access环境中,like用*号,但在C#中应该还是用%号吧?