Conn方法可以显式创建连接。CheckConn方法的主要作用是检测全局的连接是否存在,如果存在,则返回,否则就根据传递的参数创建连接――参数就是前面提到的各种形式的连接串。CheckConn方法是建立和保持连接的主要方法,具有以下功能: 1) 如果传递连接串,则创建连接;
2) 如果传递空串,则检查原链接是否有效,如果失效则使用保存的连接串重建连接;
3) 自动检测web.config文件,根据指定的连接串创建连接;
CheckConn的实现代码如下所示:
public static bool CheckConn(string ConnectString)
{
//构造对象
CreateDBObj(ConnectString);
return dbobject.IsOpen;
}
通过调用CreateDBObj方法来创建连接。CreateDBObj方法根据连接串中的特征信息,创建不同的IDB对象,并将连接的配置信息保存起来,便于在任何时候都可以恢复连接。
为了便于使用,两个辅助的函数GetAccessConnectionString和GetSqlServerConnectionString,构造常见的连接串。
连接的保持,采用了被动方式进行。即不进行主动的定期检测,而是在每次调用数据库功能的时候进行检测。如果遇到异常,则重建连接并重新执行操作。
回到顶部 三种主要操作
1、查询数据集
调用IDB接口对象dbobject中的GetData方法,将数据返回。
//数据库的查询方法
public static DataTable GetData(string sqlstr)
{
CheckDBObj(); //检查对象是否存在
return dbobject.GetData(sqlstr);
}
其中dbobject是根据连接所创建的具体的实现类。
2、执行非查询操作
非查询操作的执行和查询一样,都是调用IDB对象的相应方法来实现。
public static DBResult DoNonQuery(string sqlstr)
{
CheckDBObj(); //检查对象是否存在
return dbobject.DoNonQuery(sqlstr);
}
3、按分页查询
分页功能是Web应用程序中最为常用的功能,但是,如果按照Visual Studio的分页的方式,则每次需要查询出所有的数据,再传递给显示控件,这种处理模式在数据量庞大的时候,将会造成巨大的浪费。因此,对于分页往往需要自行定义,每次检索只查询用到的那一页数据。一般的做法,是通过存储过程来完成,但考虑到多种数据库的兼容,因此把分页功能集成到快速访问框架中。
AccessDB的GetPage同样需要调用IDB对象的方法:
public static DataTable GetPage(string strSQL, int PageSize, int PageNo, string KeyField, bool IsStringKey)
{
return dbobject.GetPage(strSQL, PageSize, PageNo, KeyField, IsStringKey);
}
分页的方法没有什么特别的,都是来源于网上的,经过测试,效率还能接受而已。
回到顶部 错误输出及调试
AccessDB的调试非常简单,所有重要操作都会跟踪并输出日志信息。日志系统采用另一篇博文提到的基于Log4Net的日志系统。
当AccessDB出错后,可以从错误日志中看到详细的信息。如果希望了解AccessDB执行的具体细节,可以通过IDB的两个属性OutputSelectLog、OutputNonQueryLog来控制。OutputSelectLog属性,决定是否输出执行的每一个Select语句;OutputNonQueryLog属性,决定是否输出执行的非查询类的语句。默认情况下,二者都关闭。
回到顶部 小结
以AccessDB为中心,提供了一套快速的数据库访问机制,通用的使用步骤如下:
1、引用CommonCode.dll,Log4Net.dll。把log4net.config复制到应用程序文件夹下。
2、初始化(web.config或者CheckConn)
3、GetData/Getpage查询,返回DataTable
4、DoNonQuery执行查询
5、在log文件夹下查看输出
分类: CommonCode快速代码集