vs2008数据库编程笔记

    技术2022-05-19  32

    一、vs6.0和vs2003中正常访问数据库的代码在vs2005或vs2008中编译报错如:

     

     

    1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tlh( 251 ) : error C2011: “IBindResource”: “ struct ”类型重定义 1 >         d:/program files/microsoft visual studio  8 /vc/platformsdk/include/oledb.h( 13883 ) : 参见“IBindResource”的声明 1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 101 ) : error C3861: “raw_RemoteBind”: 找不到标识符 1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 102 ) : error C2673: “RemoteBind”: 全局函数没有“ this ”指针 1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 102 ) : error C2673: “RemoteBind”: 全局函数没有“ this ”指针 1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 110 ) : error C2027: 使用了未定义类型“ICreateRow” 1 >         d:/program files/microsoft visual studio  8 /vc/platformsdk/include/oledb.h( 14271 ) : 参见“ICreateRow”的声明 1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 132 ) : error C2027: 使用了未定义类型“IRegisterProvider” 1 >         d:/program files/microsoft visual studio  8 /vc/platformsdk/include/oledb.h( 14637 ) : 参见“IRegisterProvider”的声明

     

    该错误由以下语句导致:

     

    #define  _WIN32_DCOM  #import  " C://Program Files//Common Files//System//ado//msado15.dll "  no_namespace rename( " EOF " , " ADOEOF " )#import  " C://Program Files//Common Files//System//Ole DB//oledb32.dll "  no_namespace

     

     

     

     

    解决办法是去掉no_namespace, 在用到的地方单独加   using namespace ADODB;

     

    另一个不知道是什么,我只好将他改名:

    #import  " C://Program Files//Common Files//System//Ole DB//oledb32.dll "  rename_namespace( " OLEDB " //  no_namespace

     

     

     

    二、DataGrid的使用

     

         在vc6.0下使用DataGrid的方法很简单,只要直接添加DataGrid控件,就会自动生成相关的类,使用人只需调用类中相关的函数即可。可是在vc++2008中,单击右键添加了DataGrid控件,并没有相关的类,而添加了DataGrid变量,只能产生一个简单的类,根本无法用它操作显示数据。

        在vc2008下使用DataGrid的方法:    1:在对话框上单击右键,选插入activex控件----------------“DataGrid”,注意它的ID(IDC_DATAGRID1)    2:在vc2008中将在vc6.0中能正常使用的DataGrid类的相关.h和.cpp文件(如DataGrid,column,columns等)添加到vc2008的工程中。    3:在vc2008中相关.h和.cpp中添加添加    CDataGrid m_db;    DDX_Control(pDX, IDC_DATAGRID1, m_db);    好了,上述三步,你就能象在vc6.0中一样在vc2008中自由使用datagrid了,如    m_db.GetColumns().GetItem(vIndex).SetWidth(50);    m_db.GetColumns().GetItem(vIndex).SetCaption(_T("姓名"));


    最新回复(0)