ACCESS 数据库连接问题

归途醉染 2018-02-09 12:03:06

void CCreateAccessTestDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码

CString strDBName,strTableName,strCmd2,strCmd3,strCmd4,strCmd5,strCmd6,strCmd7,DBName,str;
GetDlgItemText(IDC_EDIT_NAME,strDBName);
GetDlgItemText(IDC_EDIT_TABLE2,strCmd2);
GetDlgItemText(IDC_EDIT_TABLE3,strCmd3);
GetDlgItemText(IDC_EDIT_TABLE4,strCmd4);
GetDlgItemText(IDC_EDIT_TABLE5,strCmd5);
GetDlgItemText(IDC_EDIT_TABLE6,strCmd6);
GetDlgItemText(IDC_EDIT_TABLE7,strCmd7);
GetDlgItemText(IDC_EDIT_TABLE,strTableName);
if (strDBName != "" && strCmd2 != "" && strCmd3 != "" && strCmd4 != "" && strCmd5 != "" && strCmd6 != "" )
{
str = strDBName +".mdb";
DBName="Provider='Microsoft.ACE.OLEDB.12.0';Data source = ";
DBName +=str;
}
else
{
AfxMessageBox("插入值请勿为空!");
}

//打开数据库
_ConnectionPtr m_pConnect;

try
{
m_pConnect.CreateInstance(__uuidof(Catalog));
m_pConnect->Open((_bstr_t)(DBName),(_bstr_t)"",(_bstr_t)"",adModeUnknown);

}
catch (_com_error& e)
{
CString errtemp;
errtemp.Format("连接错误,原因:%s",e.ErrorMessage());
AfxMessageBox(errtemp);
return;
}




出现指针无效.......
...全文
378 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-02-09
  • 打赏
  • 举报
回复
百度搜相关关键字。
归途醉染 2018-02-09
  • 打赏
  • 举报
回复
求解
赵4老师 2018-02-09
  • 打赏
  • 举报
回复
引用 10 楼 qq_36088602 的回复:
[quote=引用 9 楼 yangnix 的回复:] 看连接字符串,你用的"Microsoft.ACE.OLEDB.12.0",你试着将用odbc连接ace,再用程序连接odbc看怎么样 我以前也作过用程序连接ace,当时好像ACE也需要有客户端的,有时间我看一下我以前怎么处理的
哈哈 错误解决 用错了东西

m_pConnect.CreateInstance(__uuidof(Catalog));
应该改为m_pConnect.CreateInstance(__uuidof(Connection));

[/quote] 作为一个苦逼ODBC、RDO、DAO、ADO程序员掉坑的典型,你这次很成功!
归途醉染 2018-02-09
  • 打赏
  • 举报
回复
引用 9 楼 yangnix 的回复:
看连接字符串,你用的"Microsoft.ACE.OLEDB.12.0",你试着将用odbc连接ace,再用程序连接odbc看怎么样 我以前也作过用程序连接ace,当时好像ACE也需要有客户端的,有时间我看一下我以前怎么处理的
哈哈 错误解决 用错了东西

m_pConnect.CreateInstance(__uuidof(Catalog));
应该改为m_pConnect.CreateInstance(__uuidof(Connection));

鄢老 2018-02-09
  • 打赏
  • 举报
回复
看连接字符串,你用的"Microsoft.ACE.OLEDB.12.0",你试着将用odbc连接ace,再用程序连接odbc看怎么样 我以前也作过用程序连接ace,当时好像ACE也需要有客户端的,有时间我看一下我以前怎么处理的
归途醉染 2018-02-09
  • 打赏
  • 举报
回复
引用 6 楼 yangnix 的回复:
估计DBName是多字节,而 m_pConnect->Open需要宽字节类型 建议你两种解决方法: 1\将DBName转为宽字节 2\整个工程设为unicode编码方式
是的 我是用多字节编程的 但是我看别人都能行了 你看看


       _ConnectionPtr m_pConnection;
       //创建表
       _variant_t RecordsAffected;
       try
       {
           m_pConnection.CreateInstance(__uuidof(Connection));
 
           m_pConnection->Open((char *)(LPCTSTR)DBName,"","",adModeUnknown);
       }
       catch(_com_error e)
       {
           CString errormessage;
           errormessage.Format("连接数据库失败!\r错误信息:%s",e.ErrorMessage());
           AfxMessageBox(errormessage);
           return;
       }
归途醉染 2018-02-09
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
百度搜相关关键字。
我就不想说话了 _CatalogPtr智能指针和_ConnectionPtr指针 都是ADO连接数据库 然后我再网上没有找_ConnectionPtr创建数据库的方法,都是连接,数据库都没创建 去哪里连接? 还有就是_CatalogPtr 都是创建数据库的方法 查询.,...... 赵老师 你看看你给个连接 从数据库创建 添加表 增删查改都有 你觉得怎么样
鄢老 2018-02-09
  • 打赏
  • 举报
回复
估计DBName是多字节,而 m_pConnect->Open需要宽字节类型 建议你两种解决方法: 1\将DBName转为宽字节 2\整个工程设为unicode编码方式
归途醉染 2018-02-09
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
百度搜相关关键字。
归途醉染 2018-02-09
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
https://www.cnblogs.com/jiangzhaowei/p/5049092.html
创建数据库和添加表没有啊

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧