设为首页 加入收藏

TOP

【7】AccessDB快速数据访问(二)
2015-07-24 11:34:36 来源: 作者: 【 】 浏览:7
Tags:AccessDB 快速 数据 访问
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快速代码集
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇辛星浅析Redis中的有序集合 下一篇OracleRACcachefusion原理测试

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 实现多个大文件 (2025-12-24 23:22:00)
·Java多线程编程在工 (2025-12-24 23:21:56)
·请问微信4.0版本xwec (2025-12-24 22:48:42)
·电脑NVIDIA的文件夹 (2025-12-24 22:48:40)
·如何看待微信新版本 (2025-12-24 22:48:37)