_RecordsetPtr prst = NULL;
prst.CreateInstance(__uuidof(Recordset));char sSql[512] = {0};
sprintf(sSql,"exec card_Test @CardNo = %.f,@PhoneNo = '%s',@ScoreUse = %f,@Consumption = %f",atof(sCard),PhoneNo,Integral,FormerMoney);try
{
_bstr_t sql=sSql;
prst->Open(sql,(IDispatch *)m_pConn,adOpenKeyset,adLockOptimistic,adCmdText);
if(!prst->adoEOF)
{
Current_Integral = (float)atof(LPCTSTR(_bstr_t(prst->GetCollect("ScoreLeft"))));
}
prst->Close();
}
catch(_com_error &e)
{
printf("write memory process,error code::%s,sql code:%s\n",e.ErrorMessage(),sSql);
char str[1024] = {0};
sprintf(str,"write memory process,error code::%s,sql code:%s",e.ErrorMessage(),sSql);
m_log.WriteLog(1,str);
return -2;
}
执行这个存储过程sprintf(sSql,"exec card_Test @CardNo = %.f,@PhoneNo = '%s',@ScoreUse = %f,@Consumption = %f",atof(sCard),PhoneNo,Integral,FormerMoney);插入或更新、删除就会抛出异常,请各位高手帮帮忙,小弟实在及,先谢各位了。
prst.CreateInstance(__uuidof(Recordset));char sSql[512] = {0};
sprintf(sSql,"exec card_Test @CardNo = %.f,@PhoneNo = '%s',@ScoreUse = %f,@Consumption = %f",atof(sCard),PhoneNo,Integral,FormerMoney);try
{
_bstr_t sql=sSql;
prst->Open(sql,(IDispatch *)m_pConn,adOpenKeyset,adLockOptimistic,adCmdText);
if(!prst->adoEOF)
{
Current_Integral = (float)atof(LPCTSTR(_bstr_t(prst->GetCollect("ScoreLeft"))));
}
prst->Close();
}
catch(_com_error &e)
{
printf("write memory process,error code::%s,sql code:%s\n",e.ErrorMessage(),sSql);
char str[1024] = {0};
sprintf(str,"write memory process,error code::%s,sql code:%s",e.ErrorMessage(),sSql);
m_log.WriteLog(1,str);
return -2;
}
执行这个存储过程sprintf(sSql,"exec card_Test @CardNo = %.f,@PhoneNo = '%s',@ScoreUse = %f,@Consumption = %f",atof(sCard),PhoneNo,Integral,FormerMoney);插入或更新、删除就会抛出异常,请各位高手帮帮忙,小弟实在及,先谢各位了。
解决方案 »
- 拜求:在钩子程序中取窗体中信息记录的方法(就这么点儿家底了,望见谅)
- unicode工程迁移(高分)
- 远程关机的问题,急,各位大侠留步
- 哪位能提供一个OPC Server/Client 的示例代码?Up有分
- 请问如何给一个string的变量赋一个数值型数据啊?
- 100分问题之二:在USB设备在拔出后,如何抢在设备驱动之前执行程序
- 我的程序DEBUG通过并且运行正常,但我RELEASE 编译通过,但运行不对
- 8848.com 高薪招聘VC/MFC程序员
- 请问 VC++ 如何调用VB编写的ActiveX DLL
- 小问题!我想在msdn中查出 可以发出某一个消息的所有动作和函数
- 询问windows各类产品的售价。
- 求助简单的问题
ADOExecute(_RecordsetPtr &ADOSet,_variant_t &strSQL)
{
if(ADOSet->State==adStateOpen)
ADOSet->Close();
try
{
ADOSet->Open(strSQL,ADOConn.
GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
return true;
}
cateh(_com_error &e)
{
CString err;
err.Format("ADO Error:%s",(char*)e.Description());
AfxMessageBox9err);
return false;
}
}还有插入记录可以用:
CString strQuery="insert 表名 (列名) values(字段所对应的变量...);
theApp.ADOExecute(theApp.m_pADOSet,strQuery);
最后请解释一下这个是什么意思呀。
sprintf(sSql,"exec card_Test @CardNo = %.f,@PhoneNo = '%s',@ScoreUse = %f,@Consumption = %f",atof(sCard),PhoneNo,Integral,FormerMoney);
2、直接用数据库查询分析器执行你的语句!
你的话是产生一个 sSql的字符串,这个字符串的功能是执行一个存储过程!
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL)) //或者CoInitialize()
{
AfxMessageBox("初始化COM组件库错误");
}
下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
另外调用存储过程的方法,查看Execute ADO相关。
我的也是这问题,奇怪,以前做的没有这问题,查询分析器执行通过,说明语句正确,用ADO就出现不确定错误,
ADO下 执行select * from tbl 通过
执行select * from tbl where language='中文'通不过