VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 909|回复: 2

插入问题,急

[复制链接]

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-10-12 10:00:01 | 显示全部楼层 |阅读模式
语句如下:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));

pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MobileInfo";
pConn->Open("","","",adConnectUnspecified);

_variant_t RecordsAffected;
CString StrSQL=_T("insert into Place values('4564','654')");
try
{
pConn->Execute(_bstr_t(StrSQL),&RecordsAffected,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox("语句或条件输入错误");
return;
}

pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
运行出现了错误:

Runtime Error!
Program:...Visual Studio\MyProjects\MobileInfo\Debug\MobileInfo.exe

This application has requested the Runtime to terminate it in an unusual way.Please contact the application's support team for more information.

但是这一句
insert into Place values('4564','654')
在SQL查询分析器里面是可以正常执行的,我执行之后把'4564','654'这个记录删除了,再到vc里面这样执行,就不行了...
请问为什么呢??
而且这种错误仅仅限于插入和删除的时候,在查询的时候是不会有错的

顺便说一下,提示错误之后再到SQL里面来看数据库,这个数据是成功插入了的,但是就是执行的时候会出现错误提示
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-13 09:00:01 | 显示全部楼层
try
{
pConn->Execute(_bstr_t(StrSQL),&RecordsAffected,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox("语句或条件输入错误");
return;
}
你用了TRY CATCH啊
回复

使用道具 举报

0

主题

13

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-10-13 09:15:01 | 显示全部楼层
pRst->Close();这一句有问题,pRst没有select,就关了不死才怪呢.
一般地,if ( pRst != NULL && pRst->adstate == adStateOpen )
{               pRst->Close; pRst = NULL);}
直接close有时在没有数据时会死,我上过很多次当了,教训深刻得很。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表