using System;
using System.Data;
namespace BadWord
{
/// <summary>
///Sift 的摘要说明
/// </summary>//LawlessDiary
public class LawlessDiary
{
private System.Data.DataSet ds;
private System.Data.IDataReader idr;
private SiftWord.SiftWordDB db;
public LawlessDiary()
{
//
//TODO: 在此处添加构造函数逻辑 应用了cache ,把数据库里面的数据放到cache里面,以后就不用每次都要连接数据库了,是个好方法啊!GOOD GOOD
//
}
public string[] WordSift(int bolgid, string title, string context) //筛选并跟新,然后返回title和content。
{
string words;
words = title + context;
string now = DateTime.Parse(Convert.ToString(System.DateTime.Now)).ToString("yyyy-MM-dd"); //获取当前时间
DateTime nows = DateTime.Now; //具体时间
if (System.Web.HttpContext.Current.Cache["keyword"] == null)
{
LawlessDiary si = new LawlessDiary();
DataSet ds = si.GetKeyWord();
string[] arr;
arr = new string[ds.Tables[0].Rows.Count];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
arr[i] = ds.Tables[0].Rows[i][0].ToString();//取出每个非法关键字,去比较
title = title.Replace(arr[i], " ");
context = context.Replace(arr[i], "");
}
System.Web.HttpContext.Current.Cache.Insert("keyword", arr);
string all = title + context;
if (all != words)
{
db = new SiftWord.SiftWordDB();
db.StoreName = "sp_update";
db.StoreInParameter("@sqlTmp", DbType.String, "UPDATE Communion.dbo.WebBlog_FaB SET DiaryState = 1, Publishdate = '" + now + "',biaot='" + title + "',zhengw='" + context + "' WHERE (BlogID = '" + bolgid + "')"); ///怎么插入使代码自动增加呢。
db.StoreOutParameter("@backinfo ", DbType.Int32, 0);
try
{
db.ExecDataSet();
}
catch (Exception)
{
}
string[] brr = { title, context };
return brr;
}
else
{
db = new SiftWord.SiftWordDB();
db.StoreName = "sp_update";
db.StoreInParameter("@sqlTmp", DbType.String, "UPDATE Communion.dbo.WebBlog_FaB SET DiaryState = 0, Publishdate = '" + now + "',biaot='" + title + "',zhengw='" + context + "' WHERE (BlogID = '" + bolgid + "')"); ///怎么插入使代码自动增加呢。
db.StoreOutParameter("@backinfo ", DbType.Int32, 0);
try
{
db.ExecDataSet();
}
catch (Exception)
{
}
string[] brr = { title, context };
return brr;
}
}
else //当Cache不为空的时候,把cache里面的值 赋值给 string[] 数组,那么子尧对这个数组操作就行,就不用连接数据库,节约了数据库宝贵的临界资源
{
string[] arr = System.Web.HttpContext.Current.Cache["keyword"] as string[];
int length = arr.Length;
for (int i = 0; i < length; i++)
{
title = title.Replace(arr[i], " ");
context = context.Replace(arr[i], " ");
}
string all = title + context;
if (words != all)
{
db = new SiftWord.SiftWordDB();
db.StoreName = "sp_update";
db.StoreInParameter("@sqlTmp", DbType.String, "UPDATE Communion.dbo.WebBlog_FaB SET DiaryState = 1, Publishdate = '" + now + "',biaot='" + title + "',zhengw='" + context + "' WHERE (BlogID = '" + bolgid + "')"); ///怎么插入使代码自动增加呢。
db.StoreOutParameter("@backinfo ", DbType.Int32, 0);
try
{
db.ExecDataSet();
}
catch (Exception)
{
}
string[] brr = { title, context };
return brr;
}
else
{
db = new SiftWord.SiftWordDB();
db.StoreName = "sp_update";
db.StoreInParameter("@sqlTmp", DbType.String, "UPDATE Communion.dbo.WebBlog_FaB SET DiaryState = 0, Publishdate = '" + now + "',biaot='" + title + "',zhengw='" + context + "' WHERE (BlogID = '" + bolgid + "')"); ///怎么插入使代码自动增加呢。
db.StoreOutParameter("@backinfo ", DbType.Int32, 0);
try
{
db.ExecDataSet();
}
catch (Exception)
{
}
string[] brr = { title, context };
return brr;
}
}
} //有标题和内容的。
DataSet GetKeyWord() //获取非法关键字
{
db = new SiftWord.SiftWordDB();
db.StoreName = "sp_select";
db.StoreInParameter("@sqlTmp", DbType.String, "SELECT keylist FROM Communion.dbo.KeyWord");
try
{
ds = db.ExecDataSet();
}
catch (Exception)
{
}
return ds;
}
/// <summary>
///
/// </summary>
/// <param name="str">返回过滤后字符</param>
/// <returns></returns>
public string StringSift(string str) //检验一个字符串有没有非法关键字
{
if (System.Web.HttpContext.Current.Cache["keyword"] == null)
{
LawlessDiary si = new LawlessDiary();
DataSet ds = si.GetKeyWord();
string[] arr;
arr = new string[ds.Tables[0].Rows.Count];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
arr[i] = ds.Tables[0].Rows[i][0].ToString();//取出每个非法关键字,去比较
str = str.Replace(arr[i], "");
}
System.Web.HttpContext.Current.Cache.Insert("keyword", arr);
ds.Dispose();
return str;
}
else //当Cache不为空的时候,把cache里面的值 赋值给 string[] 数组,那么子尧对这个数组操作就行,就不用连接数据库,节约了数据库宝贵的临界资源
{
string[] arr = System.Web.HttpContext.Current.Cache["keyword"] as string[];
int length = arr.Length;
for (int i = 0; i < length; i++)
{
str = str.Replace(arr[i], "");
}
ds.Dispose();
return str;
}
}
/// <summary>
///
/// </summary>
/// <param name="id">BlagID</param>
/// <returns></returns>
public bool checklock(int id)
{
int state;
db = new SiftWord.SiftWordDB();
db.StoreName = "sp_select";
db.StoreInParameter("@sqlTmp", DbType.String, "select diarystate from Communion.dbo.WebBlog_FaB where blogid='" + id + "'");
try
{
ds = db.ExecDataSet();
}
catch (Exception)
{
}
state = Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
if (state == 3)
{
return true;
}
else
{
return false;
}
}
}
}