vs2008数据库编程笔记

来源:互联网 发布:中国根域名服务器在哪 编辑:程序博客网 时间:2024/05/01 23:05

一、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("姓名"));

原创粉丝点击