C#建立缓存时,使用查询语句不要忘了dbo。
第一次用缓存没有注意查询语句的格式,反复调试其他代码都没有写错,后来被师傅找出来是查询语句没有写全;学会要注意细节给大家分享一下。
public const string SQL_tblprovince_Select_All = "SELECT ProvinceID,ProvinceName FROM dbo.province";
public DataSet GetProvince()
{
LogManager.Debug("Calling: [PositionDAL.GetProvinceList]");
return SqlCacheSelect(SQL_tblprovince_Select_All, "PositionDAL.GetProvinceList");
}
public DataSet SqlCacheSelect(string sqlStr, string cacheKey)
{
if (HttpRuntime.Cache[cacheKey] != null)
{
//取缓存中数据
DataSet ds = (DataSet)HttpRuntime.Cache[cacheKey];
return ds;
}
DBAccess db = null;
try
{
//从数据库中取数据
db = new DBAccess();
db.CommandType = CommandType.Text;
db.CommandText = sqlStr;
SqlDependency.Start(ConfigurationManager.ConnectionStrings["xxx"].ConnectionString);
SqlCacheDependency dependency = new SqlCacheDependency(db.GetSqlCommand());
DataSet ds = db.ExecuteDataSet();
HttpRuntime.Cache.Insert(cacheKey, ds, dependency);
return ds;
}
catch (Exception ex)
{
LogManager.Error("Exec " + sqlStr + " error. " + ex.Message, ex);
return null;
}
finally
{
if (db != null)
{
db.Dispose();
}
}
}
657

被折叠的 条评论
为什么被折叠?



