access-关于vc6.0利用ADO动态链接ACCESS不成功的问题

问题描述

关于vc6.0利用ADO动态链接ACCESS不成功的问题
void CDBDlg::OnButtonOpen()
{
// TODO: Add your control notification handler code here
//建立一个对话框,选择mdb文件

static char BASED_CODE szFilter[] = ""mbd文件 (*.mdb)|*.mdb|所有文件 (*.*)|*.*||"";char Buffer[MAX_PATH];::GetCurrentDirectory(MAX_PATHBuffer); CFileDialog FileDlg( TRUE NULL NULL OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT szFilterNULL );FileDlg.m_ofn.lpstrInitialDir=Buffer;if(IDOK==FileDlg.DoModal()){   lpstrName=FileDlg.GetPathName();}//连接数据库   _bstr_t strcnn(_T(""Provider=Microsoft.JET.OLEDB.4.0;Data source=lpstrName""));try{    m_pConnection.CreateInstance(__uuidof(Connection));    m_pConnection->Open(strcnn_T("""")_T("""")adModeUnknown);    m_pRecordset.CreateInstance(__uuidof(Recordset));}catch (_com_error e){    AfxMessageBox(""连接数据库失败"");    return;}

//打开数据库
try
{

     _bstr_t bstrSQL=""SELECT * FROM defects "";//order by RecordNum desc"";    m_pRecordset->Open(bstrSQLm_pConnection.GetInterfacePtr()adOpenDynamicadLockOptimisticadCmdText);    while(!m_pRecordset->adoEOF)    {   m_Grid.InsertItem(0");        m_Grid.SetItemText(00(char*)(_bstr_t)m_pRecordset->GetCollect(""valid""));        m_Grid.SetItemText(01(char*)(_bstr_t)m_pRecordset->GetCollect(""maxpost""));        m_Grid.SetItemText(02(char*)(_bstr_t)m_pRecordset->GetCollect(""maxminor""));        m_Grid.SetItemText(03(char*)(_bstr_t)m_pRecordset->GetCollect(""defecttype""));        m_Grid.SetItemText(04(char*)(_bstr_t)m_pRecordset->GetCollect(""maxval1""));        m_Grid.SetItemText(05(char*)(_bstr_t)m_pRecordset->GetCollect(""length""));        m_Grid.SetItemText(06(char*)(_bstr_t)m_pRecordset->GetCollect(""defectclass""));        m_Grid.SetItemText(07(char*)(_bstr_t)m_pRecordset->GetCollect(""tbce""));        m_Grid.SetItemText(08(char*)(_bstr_t)m_pRecordset->GetCollect(""speedatmaxval""));        m_Grid.SetItemText(09(char*)(_bstr_t)m_pRecordset->GetCollect(""postedspd""));        m_pRecordset->MoveNext();    }    m_pRecordset->Close();}catch (_com_error e){    AfxMessageBox(""数据库打开失败"");}

}

解决方案

你那样写根本不会将文件名拼接在连接字符串里
CString dd;

dd.Format(""Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s""lpstrName);

hr = m_pConnect->Open((_bstr_t)dd""adModeUnknown);

具体:
http://www.cnblogs.com/cy163/archive/2007/04/05/700596.html

解决方案二:
lpstrName是变量,你不能直接放到strcnn中,需要用Format格式化字符串。

解决方案三:
CodeFrge的代码可能解答你的问题http://www.codeforge.cn/article/211683.还有其他更多文章你可以参考的

时间: 2024-08-04 04:17:25

access-关于vc6.0利用ADO动态链接ACCESS不成功的问题的相关文章

在.NET 2.0框架下动态创建Access数据库和表

<%@ Page Language="C#" %> <%@ Import Namespace="ADOX" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat=&

mfc利用ado链接access数据库

问题描述 mfc利用ado链接access数据库 1C 连接之后并没有自动生成一些和ado相关的类,是正常的么... 解决方案 MFC利用ADO操作Access数据库VC ADO链接ACCESS数据库C#链接ACCESS数据库 解决方案二: [http://blog.sina.com.cn/s/blog_610c1cad0100yhrr.html] 解决方案三: // UserData.cpp : implementation file//#include ""stdafx.h&quo

ado 链接sql server-c++利用ADO如何通过Internet网访问SQL Server数据库?

问题描述 c++利用ADO如何通过Internet网访问SQL Server数据库? c++利用ADO如何通过Internet网访问SQL Server数据库?需要对电脑设置哪些关键的项. 我的代码:bstr_t strConnect = "Driver={SQL Server};Server=10.0.0.44;Database=test;UID=sa;PWD=111111" //_bstr_t strConnect = "Provider=SQLOLEDB.1;Passw

VC6.0常见链接错误与解决方法

这篇文章主要介绍了VC6.0开发中一些常见链接错误的解决方法,需要的朋友可以参考下   (1)error LNK2001: unresolved external symbol _main 编号:LNK2001 直译:未解决的外部符号:_main. 错误分析:缺少main函数.看看main的拼写或大小写是否正确. (2)error LNK2005: _main already defined in xxxx.obj 编号:LNK2005 直译:_main已经存在于xxxx.obj中了. 错误分析

新人 求大神指教-mfc中用ado链接access数据库后的查询使用问题

问题描述 mfc中用ado链接access数据库后的查询使用问题 新人 mfc作业 是地铁查询系统 已经用ado链接了access但那几个对象指针完全不知道怎么用_(:3」∠)_以及数据库中的里程数据是相邻两站间的 该如何实现输入起点终点来定位数据库中的里程数据从而计算输出_(:3」∠)_求教求教 解决方案 http://r.m.baidu.com/ty3j95s 解决方案二: 参考这个现成的程序:http://download.csdn.net/detail/buptmuye/3431975

VC项目配置基础 (VC6.0 和VC2005)

一.预处理宏 1. 通用宏 VC6.0 中: Project Setting à C/C++ à Preprocessor definitions VC2005 中: 项目属性 à 配置属性 à C/C++ à 预处理器定义   WIN32 :指明是 Window 32 位系统的编译器,一般用作平台识别. _MBCS/_UNICODE :指明该工程使用的字符集(多字节字符集 /UNICODE ). 在 VC6.0 的 "Project Setting à C/C++ à Project Opti

用DAO或ADO正确访问Access 2000

当你使用 DAO 访问 Access 2000 时,是否会出现以下的错误信息? "Run-time error 3343 Unrecognized Database Format XXX" 这个错误信息有二个解决的方式: 1.如果你是使用 Data Control 来连结 Access 2000 的资料库时: 你必须在设定 Data Control 的 Source 前先加上一行 Set Data1.Recordset = rsDAO36 'rsDAO36 is a DAO 3.6 2

用VC6.0集成环境快速开发VxD

VxD (Virtual Device Driver), 即虚拟设备驱动程序, 是运行在处理器Ring0特权级别的驱动程序,可以执行任何处理器指令,访问机器中的任何数据寄存器.VxD被用作Windows 9x系统和物理设备之间的接口,扩展了WINDOWS 系统的核心服务,能够访问和控制实际的硬件环境. 随着WIN 2000和新一代的设备驱动程序WDM(Windows Driver Model)推出,预计VxD将慢慢过时,而现实情况却是:随便打开一种网络计数器的统计窗口就会发现,Windows 9

第三章 装载与动态链接

装载与动态链接 1可执行文件的装载与进程 可执行文件只有装载到内存后才能被CPU执行.早期的程序装载十分简陋,装载的基本过程就是把程序从外部存储器中读取到内存中的某个位置. 历史有过的装载方式包括覆盖装载.页映射. 1.1 进程虚拟地址空间 程序是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件:进程则是一个动态的概念,它是程序运行的一个过程. 每个程序被运行起来以后,都有自己的虚拟地址空间,这个虚拟地址空间的大小由计算机的硬件平台决定,具体地说是由CPU的位数决定的. 1.2 装