mfc连接数据库失败

龙虾小兵 2014-07-17 10:04:33
void CAddDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CoInitialize(NULL);//初始化COM库
_ConnectionPtr pConn(_uuidof(Connection));//利用智能指针定义了一个ADO Connection对象,
//利用关键字_uuidof获取ADO Connection接口的全局唯一标识符(GUID),对pConn对象初始化
_RecordsetPtr pRst(_uuidof(Recordset));//利用智能指针定义了一个ADO Recordset对象
pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=XP-201308221218";//为数据口连接对象的连接字符串赋值
pConn->Open("","","",adConnectUnspecified);//这里可以直接为这些参数传递一个空字符串,因为它们已经在连接字符串中设置好了
//pRst=pConn->Execute("select * from 菜单",NULL,adCmdText);
//pRst->AddNew(_variant_t(m_addname),m_addprice);
//pRst->m_strName=m_addname;
//pRst->AddNew("菜名",_variant_t(m_addname));
//pRst->AddNew("单价",m_addprice);

//pRst->AddNew();
//pRst->PutCollect("菜单",_variant_t(m_addname));
//pRst->Update();

_variant_t RecordsAffected;
pRst=pConn->Execute("INSERT INTO 菜单 (菜名,单价) VALUES ((_variant_t)m_addname,(_variant_t)m_addprice)",&RecordsAffected,adCmdText);
pRst->Close();//关闭记录集
pConn->Close();//关闭连接
pRst.Release();//释放智能指针在COM接口上的引用计数
pConn.Release();
CoUninitialize();//卸载COM库



错误为:estaurant.exe 中的 0x7c812fd3 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0012ebbc 处的 _com_error。
...全文
460 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyjj_99 2014-08-22
  • 打赏
  • 举报
回复
pRst=pConn->Execute("INSERT INTO 菜单 (菜名,单价) VALUES ((_variant_t)m_addname,(_variant_t)m_addprice)",&RecordsAffected,adCmdText); 插入语句写错了吧
happyhhb 2014-08-22
  • 打赏
  • 举报
回复
是不是权限问题?
当当小螳螂 2014-07-22
  • 打赏
  • 举报
回复
是不是和配置数据源有关系!希望有帮助!
龙虾小兵 2014-07-19
  • 打赏
  • 举报
回复
引用 9 楼 chenlycly 的回复:
是不是连接串的问题,试试这个:
_T("Driver={SQL Server};Server=%s;Database=%s;Uid=%s;Pwd=%s")
连接串应该没有问题,因为用该串可以从数据库中读取数据,但是不能插入记录。
dvlinker 2014-07-18
  • 打赏
  • 举报
回复
是不是连接串的问题,试试这个:
_T("Driver={SQL Server};Server=%s;Database=%s;Uid=%s;Pwd=%s")
龙虾小兵 2014-07-18
  • 打赏
  • 举报
回复
引用 6 楼 bojie5744 的回复:
打开字符串格式如下("Provider=SQLOLEDB;Data Source=XXXXXX\\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=XXXXX","","",-1); 其中Data Source的值等于XXXXXX\\SQLEXPRESS,试试改为XP-201308221218\\\\SQLEXPRESS 怎么知道这条语句?如果是使用VS08,10,13的版本点击下面的看看 http://blog.csdn.net/bojie5744/article/details/34853807
现在的问题是可以查询记录,但是不可以用上面的方法插入一条记录
  • 打赏
  • 举报
回复
上面打多了个\\ XP-201308221218\\SQLEXPRESS
  • 打赏
  • 举报
回复
打开字符串格式如下("Provider=SQLOLEDB;Data Source=XXXXXX\\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=XXXXX","","",-1); 其中Data Source的值等于XXXXXX\\SQLEXPRESS,试试改为XP-201308221218\\\\SQLEXPRESS 怎么知道这条语句?如果是使用VS08,10,13的版本点击下面的看看 http://blog.csdn.net/bojie5744/article/details/34853807
龙虾小兵 2014-07-18
  • 打赏
  • 举报
回复
引用 1 楼 bojie5744 的回复:
是SQL SERVER 200X?
是SQL SERVER 2000
龙虾小兵 2014-07-18
  • 打赏
  • 举报
回复
引用 楼主 chengdongyuan 的回复:
void CAddDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	CoInitialize(NULL);//初始化COM库
	_ConnectionPtr pConn(_uuidof(Connection));//利用智能指针定义了一个ADO Connection对象,
	//利用关键字_uuidof获取ADO Connection接口的全局唯一标识符(GUID),对pConn对象初始化
	_RecordsetPtr pRst(_uuidof(Recordset));//利用智能指针定义了一个ADO Recordset对象
	pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=XP-201308221218";//为数据口连接对象的连接字符串赋值
	pConn->Open("","","",adConnectUnspecified);//这里可以直接为这些参数传递一个空字符串,因为它们已经在连接字符串中设置好了
	//pRst=pConn->Execute("select * from 菜单",NULL,adCmdText);
	//pRst->AddNew(_variant_t(m_addname),m_addprice);
	//pRst->m_strName=m_addname;
	//pRst->AddNew("菜名",_variant_t(m_addname));
	//pRst->AddNew("单价",m_addprice);

	//pRst->AddNew();
	//pRst->PutCollect("菜单",_variant_t(m_addname));
	//pRst->Update();

	_variant_t RecordsAffected;
	pRst=pConn->Execute("INSERT INTO 菜单 (菜名,单价) VALUES ((_variant_t)m_addname,(_variant_t)m_addprice)",&RecordsAffected,adCmdText);
	pRst->Close();//关闭记录集
	pConn->Close();//关闭连接
	pRst.Release();//释放智能指针在COM接口上的引用计数
	pConn.Release();
	CoUninitialize();//卸载COM库
错误为:estaurant.exe 中的 0x7c812fd3 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0012ebbc 处的 _com_error。
是SQL SERVER 2000
龙虾小兵 2014-07-18
  • 打赏
  • 举报
回复
是SQL SERVER 2000
  • 打赏
  • 举报
回复
先单步调试下到哪一步出错,然后说下哪里。可参考这些代码http://blog.csdn.net/bojie5744/article/details/30067969
  • 打赏
  • 举报
回复
是SQL SERVER 200X?

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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