Loading, please wait...

Sunday, March 29, 2009

不使用向导向工程中添加数据库支持

译者:GreatGhoul


我读过的书中都会有这么一个章节"数据库编程",在这个短小的章节中总会有这么一个典型的例子用向导新建一个工程,选中"使用数据库"并选择数据库类型....

不过,如果项目开始一个月后我才意识到"...,我需要在工程中使用数据库"或者"我需要使用另一个Recordset",有或者"我需要添加另一个数据库",难道我要重新开始这个工程吗?答案不用,这很容易解决.


  • 创建一个没有数据库支持的新工程(如果你已经有一个这样的工程,跳过此步)
  • stdafx.h中添加头文件
    #include "afxdb.h"
  • 在要使用数据库的类(比如View)中添加成员变量:
    CDatabase m_MyDatabase;
  • 初始化类时
    译者:GreatGhoul


    我读过的书中都会有这么一个章节"数据库编程",在这个短小的章节中总会有这么一个典型的例子用向导新建一个工程,选中"使用数据库"并选择数据库类型....

    不过,如果项目开始一个月后我才意识到"...,我需要在工程中使用数据库"或者"我需要使用另一个Recordset",有或者"我需要添加另一个数据库",难道我要重新开始这个工程吗?答案不用,这很容易解决.

    • 创建一个没有数据库支持的新工程(如果你已经有一个这样的工程,跳过此步)
    • stdafx.h中添加头文件
      #include "afxdb.h"
    • 在要使用数据库的类(比如View)中添加成员变量:
      CDatabase m_MyDatabase;
    • 初始化类时
      译者:GreatGhoul


      我读过的书中都会有这么一个章节"数据库编程",在这个短小的章节中总会有这么一个典型的例子用向导新建一个工程,选中"使用数据库"并选择数据库类型....

      不过,如果项目开始一个月后我才意识到"...,我需要在工程中使用数据库"或者"我需要使用另一个Recordset",有或者"我需要添加另一个数据库",难道我要重新开始这个工程吗?答案不用,这很容易解决.

      • 创建一个没有数据库支持的新工程(如果你已经有一个这样的工程,跳过此步)
      • stdafx.h中添加头文件
        #include "afxdb.h"
      • 在要使用数据库的类(比如View)中添加成员变量:
        CDatabase m_MyDatabase;
      • 初始化类时,对数据库进行初始化
        m_MyDatabase.Open(NULL, FALSE, FALSE, os);
        在这里os只是一个指定打开数据库参数的CString,形如:
        CString os = "ODBC;DSN=MyDb;UID=MyUser;PWD=MyPassword;";
        在这个字符串中有如下参数:
        • ODBC 使用ODBC数据库
        • DSN=... 数据源名称(就是在"控制面板>管理工具>数据源"中添加的名称)
        • UID=... 连接数据库的用户名
        • PWD=... 连接数据库的密码
      • 现在我们需要一个特定的recordset从数据库中获取数据.这很简单.新建一个继承自CRecordSet的类(AppWizrd(Ctrl+W),新建类),以及要用到的字段等.(如果你要在多个不同的View中使用数据库,你可以创建多个CRecordSet的子类(比如为每一个table创建一个recordset))
      • 把定义了recordset的头文件添加到要使用数据库的文件中,并设置所需的变量.
        CMyRecordSet *MyRecordSet;
      • 然后打开recordset:
        pMyRecordSet=new CMyRecordSet(&m_MyDatabase);
        pMyRecordSet->Open(); // You can open it in many ways, see the help
        .
        .
        .
        pMyRecordSet->Close() ;
      • 关闭程序是别忘了关闭数据库连接.
        m_MyDatabase.Close();
      想要更深一步了解数据库便编程,可以查看帮助文档,本文只是一个开始.

转载声明: 出自: Ghoul To World!作者: GreatGhoul

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.