/// <summary>
/// 根据文件的ID来更新点击。
/// </summary>
protected void ArticleHits()
{
String PoemID = Request["id"];//从参数中接收文章ID;
if (PoemID == null) return;//参数不存在,返回。
int iHits;//点击
OleDbConnection dbconn = XianShiWen.MyClass.getConn("UserInfo.mdb"); //数据库连接
OleDbDataAdapter da;
String chaxun = "SELECT * FROM [ArticleHits] where ([ArticleID] = '" + PoemID + "') ";//根据ID查询文件。
dbconn.Open();
da = new OleDbDataAdapter(chaxun, dbconn);//引用数据库连接dbconn并依据SQL语
DataSet ds = new DataSet(); //创建DataSet对象
da.Fill(ds); //用OleDbDataAdapter对象da填充、更新刚创建的DataSet对象。
if (ds.Tables[0].Rows.Count ==1)//如果查到(因为ID是唯一的),
{
iHits = int.Parse(ds.Tables[0].Rows[0]["Hits"].ToString()) + 1; //获取原来点击量,并加1;
da = new OleDbDataAdapter(chaxun, dbconn);//再建一张更新表。
//建立起更新命令,根据实践,此处用Select和Updat,效果一样。
//下句等同于da.UpdateCommand = new OleDbCommand("Update * FROM [ArticleHits] where ([ArticleID] = '" + PoemID + "') ", dbconn);
da.UpdateCommand = new OleDbCommand("Select * FROM [ArticleHits] where ([ArticleID] = '" + PoemID + "') ", dbconn);
OleDbDataAdapter da2;
da2 = new OleDbDataAdapter(chaxun, dbconn);//引用数据库连接dbconn并依据SQL语
da2.SelectCommand = new OleDbCommand(chaxun, dbconn);
DataSet ds2 = new DataSet(); //创建DataSet对象
OleDbCommandBuilder cb = new OleDbCommandBuilder(da2);
da2.Fill(ds2, "hits");
//下句要注意:ds2.Tables["hits"].Rows[0][0]是字段本身(即ID=326);ds2.Tables["hits"].Rows[0][1],会把326更新为iHits;ds2.Tables["hits"].Rows[0][2]则更新结果。
ds2.Tables["hits"].Rows[0][2] = iHits.ToString();
da2.Update(ds2.Tables["hits"]);
}
else
{//如果没有查到,就增加一条纪录。
string insertstr = "INSERT INTO ArticleHits (ArticleID, Hits) VALUES ('" + PoemID + "', '1')";
OleDbCommand insertcmd = new OleDbCommand(insertstr, dbconn);
insertcmd.ExecuteNonQuery();
}
dbconn.Close();
}
文章是用到一个类,代码如下:
/// <summary>
/// 连接一个数据库。
/// </summary>
/// <param name="DataName">指明所连接的数据库文件名,如GuShiWen.mdb。</param>
/// <returns>连接数据库的类。</returns>
public static OleDbConnection getConn(String DataName)
{
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\"+DataName+";Persist Security Info=False";
OleDbConnection tempconn = new OleDbConnection(connstr);
return (tempconn);
}