俺是工控行业,以前写过一个 DCS 到通用数据库的数据服务程序,采用了 ODBC API(未用 MFC ODBC)
因为要考虑到需兼容多种通用数据库,直接采用 Update 和 Insert 语句写数据库,未进行任何优化(如参数化 SQL 语句):
采用 DB2 时,Update 或 Insert 约为200条/s,
采用 SQL Server、Access、FoxPro ,Update 或 Insert 约为400条/s,
由于 DCS 数据常多达万个,其性能无法达到要求.问:
1)如果采用 OLE DB 或 ADO 的方式(不经过 ODBC,而直接访问数据库的 OLE DB 驱动),速度会不会有数量级的提升?
2)如果采用 ADO,由于MDAC版本过多,在发行时是不是需要安装特定版本的MDAC?
3) 如要采用 OLE DB + ATL 方式,发行时是不是就不需要安装 MDAC?
4) 俺星期天跑遍了南京市的书店,未找到详细讲述 VC 下 OLE DB 编程的书籍,在网上也找不到多少相关资料,这又是为什么?
5) 俺是工控行业,做的软件应尽可能是绿色软件(不然用该软件的同事们会骂我的),用 OLE DB 后可不可以不制作安装程序?

解决方案 »

  1.   

    1.OLE DB和ADO比ODBC快,但不至于是数量级的提升。但采取一些技术可能能做到。
    2.是的,这是采用ADO开发的一个问题。必须保证开发和使用环境MDAC版本的一致。
    3.是的,但是OLE DB也是有版本的,高版本的OLE DB只是提供了一些不太用到的接口,
      这些接口也不是所有OLE DB提供者都支持,所以,一般不需要特定版本的MDAC.
    4.别找了,没有资料,因为我找的时间肯定比你多,这方面的资料世界范围内都很少。
    5.一般说来是的,我正在用ole db开发,不用制作安装程序。我的经验:用OLE DB是一件很麻烦的事,ATL对OLE DB的封装很不完全,很多东西都没
    做,而且做了的还有bug, 但是即使是VS.net 2003也没有改善。
    用ole db必须和ole db sdk打交道,而msdn里也少有资料,网上也没有。
    相比之下,ADO(这个东西是对OLE DB的COM包装,并且完全是为了脚本语言设计的,其实
    不适合在VC下用)就好多了,不仅包装完全,而且文档丰富(可以参考VB的),所以比较
    好用。
    如果你有时间研究OLE DB我看使用起来肯定比ADO好。
      

  2.   

    谢谢楼上的朋友,
    以前用ODBC时,构造SQL后直接执行,如果参数化SQL语句后,性能应可以提高一些,如果改用OLEDB,应可以再提高一些,这样也许俺的程序性能就可以满足要求了.
    俺不想用 ADO, 如果要用它,那也应该在 VB 里用.
    用VC的目的就是不想做安装程序,将*.exe + *.ini + ... 几个文件拷贝到任何一处都可以运行,多爽.再次谢谢