我的数据访问类-如何利用微软的DataAccess2
在上一次的文章中我们在微软的dataaccess1.0的版本上作了两点改动,第一:增加一个加密类。第二,提供给用户可以反馈DataSet的几个方法。这次我们来看看这个东东是否还有新的东西可以挖掘?
大家在做项目的过程中可能会有这样的要求,需要客户对数据的操作记录记录下来,以便以后的时候查对。那么能不能利用我们现有的这个类来实现这个功能呢?对,答案是肯定的,只要我们肯动脑筋。
下面就让我们一起来搞定它。你会发现原来是这样。。。对,真的很简单。来吧,跟上我们的脚步。]
第一步:为了实现监控,就需要一个简单的数据监控表,这里只是demo。真正的过程中我们可以见上很多的东西,譬如操作者、操作对象等。
数据监控表如下
其中OperationTime的默认值为GetDate();
关于这个表的存储过程我这里就不详细说了。
第二步:为了让我们现有的方法可以用。我们需要新建一个方法,这个方法就是,对,我想你猜到了,就是为数据监控而服务的。
#region 数据监控
public int DataWatch(string watchsql)
{
SqlParameter[] parms={
MakeInParam("@WatchOperation",SqlDbType.VarChar,8000,"exec "+watchsql)
};

SqlCommand cmd = CreateCommand("WebSite_Watch_Opertion_Create", parms);
cmd.ExecuteNonQuery();
return (int)cmd.Parameters["ReturnValue"].Value;

}
#endregion 第三步:哦,好了,我想我们做的已经差不多了。什么?没有监控?哦。好吧,那么这样可不可以呢?
看看有什么区别么?对只是对原有的类方法增加了一个方法调用就达到了我们的目的。那么,赶快动手把下面的都改了吧?哈哈,成功了?不是么?
最后,让我们再回顾并思考一下,对,思考是进步的源泉!
说明:该类除了对Webconfig中的数据库连接字符串进行加密外,还特别的加入了数据监控类的基础,但目前该版本为了不影响现有程序,所有的数据操作全部写入了表中。这是不可取的地方。那么有没有办法保证我们可以有选择的插入呢?当然可以,下回我们再说吧,相信也许你已经搞定了。呵呵;)没有关系,可以留言和偶交流交流。大家一起进步!
声明:转载请标明,文中提及代码可以免费使用,只需要您给我留言而已。请尊重他人劳动成果!
大家在做项目的过程中可能会有这样的要求,需要客户对数据的操作记录记录下来,以便以后的时候查对。那么能不能利用我们现有的这个类来实现这个功能呢?对,答案是肯定的,只要我们肯动脑筋。
下面就让我们一起来搞定它。你会发现原来是这样。。。对,真的很简单。来吧,跟上我们的脚步。]
第一步:为了实现监控,就需要一个简单的数据监控表,这里只是demo。真正的过程中我们可以见上很多的东西,譬如操作者、操作对象等。
数据监控表如下
1
CREATE TABLE [dbo].[WebSite_Watch_Opertion] (
2
[WatchID] [bigint] IDENTITY (1, 1) NOT NULL ,
3
[WatchOperation] [text] COLLATE Chinese_PRC_CI_AS NOT NULL ,
4
[OperationTime] [datetime] NOT NULL
5
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[WebSite_Watch_Opertion] (2
[WatchID] [bigint] IDENTITY (1, 1) NOT NULL ,3
[WatchOperation] [text] COLLATE Chinese_PRC_CI_AS NOT NULL ,4
[OperationTime] [datetime] NOT NULL 5
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]其中OperationTime的默认值为GetDate();
关于这个表的存储过程我这里就不详细说了。
第二步:为了让我们现有的方法可以用。我们需要新建一个方法,这个方法就是,对,我想你猜到了,就是为数据监控而服务的。
#region 数据监控
public int DataWatch(string watchsql)
{
SqlParameter[] parms={
MakeInParam("@WatchOperation",SqlDbType.VarChar,8000,"exec "+watchsql)
};
SqlCommand cmd = CreateCommand("WebSite_Watch_Opertion_Create", parms);
cmd.ExecuteNonQuery();
return (int)cmd.Parameters["ReturnValue"].Value;
}
#endregion 1
#region 方法RunProc,(存储过程名),无返回结果!-------------------------------1
2
/// <summary>
3
/// Run stored procedure.
4
/// 适用于那些不需要返回值得存储过程
5
/// </summary>
6
/// <param name="procName">Name of stored procedure.</param>
7
/// <returns>Stored procedure return value.</returns>
8
public int RunProc(string procName)
9
{
10
SqlCommand cmd = CreateCommand(procName, null);
11
cmd.ExecuteNonQuery();
12
// 这里是数据监控增加的部分 [11/30/2004]
13
DataWatch(procName);
14
// [11/30/2004]
15
this.Close();
16
return (int)cmd.Parameters["ReturnValue"].Value;
17
}
18
#endregion
#region 方法RunProc,(存储过程名),无返回结果!-------------------------------12
/// <summary>3
/// Run stored procedure.4
/// 适用于那些不需要返回值得存储过程5
/// </summary>6
/// <param name="procName">Name of stored procedure.</param>7
/// <returns>Stored procedure return value.</returns>8
public int RunProc(string procName) 9
{10
SqlCommand cmd = CreateCommand(procName, null);11
cmd.ExecuteNonQuery();12
// 这里是数据监控增加的部分 [11/30/2004]13
DataWatch(procName);14
// [11/30/2004]15
this.Close();16
return (int)cmd.Parameters["ReturnValue"].Value;17
}18
#endregion最后,让我们再回顾并思考一下,对,思考是进步的源泉!
说明:该类除了对Webconfig中的数据库连接字符串进行加密外,还特别的加入了数据监控类的基础,但目前该版本为了不影响现有程序,所有的数据操作全部写入了表中。这是不可取的地方。那么有没有办法保证我们可以有选择的插入呢?当然可以,下回我们再说吧,相信也许你已经搞定了。呵呵;)没有关系,可以留言和偶交流交流。大家一起进步!
声明:转载请标明,文中提及代码可以免费使用,只需要您给我留言而已。请尊重他人劳动成果!



浙公网安备 33010602011771号