出现 Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失)解决

//删除记录在MDB
BOOL DeleteRecMDB(char *Apsztextplarm)//+ Apsztextplarm 0x004080b0 "10.1" char *

{
SQLHANDLE hStm2;
SQLRETURN bRe;
SQLINTEGER length=0;
SQLCHAR ErrorMdbBuff[128]={0};
SQLINTEGER NativeErrorPtr;
SQLCHAR MessageText [128]={0};
SQLSMALLINT TextLengthPtr;
SQLSMALLINT IsHaveDate;
SQLCHAR SQLselectIp[]={"DELETE mactable WHERE mac=?"};
char ParamBuff[13]={0};

bRe=SQLAllocHandle(SQL_HANDLE_STMT,ConHandle,&hStm2);
if (bRe==SQL_SUCCESS||SQL_SUCCESS_WITH_INFO)
{

bRet=SQLPrepareA(hStm2,SQLselectIp,sizeof(SQLselectIp));

bRet=SQLBindParameter(hStm2,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,20,0,ParamBuff,20,&length);
if (bRet!=SQL_SUCCESS)
{
SQLGetDiagRecA(SQL_HANDLE_STMT,hStm2,1,ErrorMdbBuff,&NativeErrorPtr,MessageText,128, &TextLengthPtr);
return FALSE;
}
memcpy(ParamBuff,Apsztextplarm,13);
//+ ParamBuff 0x0012f808 "10.1" char [13]

length=13;
bRet=SQLExecute(hStm2);//执行错误
if (bRet==SQL_SUCCESS)
{


SQLFreeHandle(SQL_HANDLE_STMT,hStm2);
MessageBoxW(0,L"删除成功",0,MB_OK);
return TRUE;
}
else

{
SQLGetDiagRecA(SQL_HANDLE_STMT,hStm2,1,ErrorMdbBuff,&NativeErrorPtr,MessageText,128, &TextLengthPtr);
SQLFreeHandle(SQL_HANDLE_STMT,hStm2);

}


}
else
{
SQLGetDiagRecA(SQL_HANDLE_STMT,hStm2,1,ErrorMdbBuff,&NativeErrorPtr,MessageText,128, &TextLengthPtr);
}
return FALSE;



}

 

上面的一段代码,怎么看都是正确的,但是总是 运行说是 缺少操作符

把那个语句在sql中运行一遍没有出错,郁闷。。。

 

又翻翻了sql语法,发现这个delete还有个可选的操作符是FROM

 

于是这样

SQLCHAR SQLselectIp[]={"DELETE FROM mactable WHERE mac=?"};

这样改了下

 

运行OK。。。。晕死了

难道ODBC编程中的语句非要写全命令吗??????????

 

看来是这样,我又重新试了下插入的命令,如果不加INTO的话同样出现错误。。

 

在此记下。。大家一定要小心哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值