VC+OLEDB+ACCESS,字符串出错!
用以下的代码,搜索数据库,没问题。
//hr=pICommandText->SetCommandText(DBGUID_DEFAULT,L"SELECT * FROM MUTOUTYPE WHERE MuTouID = 1");
if(FAILED(hr))
{
goto Exit;
}
hr=pICommandText->Execute(NULL,IID_IRowsetChange,NULL,NULL,(IUnknown**)& pIRowsetChange);
if(FAILED(hr))
{
goto Exit;
}
将字符串改为下面格式时:
int iNum=1;
str.Format(L"SELECT * FROM MUTOUTYPE WHERE MuTouID = '%d'",iNum);
hr=pICommandText->SetCommandText(DBGUID_DEFAULT,str.AllocSysString());
if(FAILED(hr))
{
goto Exit;
} hr=pICommandText->Execute(NULL,IID_IRowsetChange,NULL,NULL,(IUnknown**)& pIRowsetChange);
if(FAILED(hr))
{
goto Exit;
}
执行到Execute语句完,hr=DB_E_CANTCONVERTVALUE 出错,
请问L"SELECT * FROM MUTOUTYPE WHERE MuTouID = 1"与
L"SELECT * FROM MUTOUTYPE WHERE MuTouID = '1'"语句有何区别呢?
在程序的字符串中如何将'1'改为1呢?
用以下的代码,搜索数据库,没问题。
//hr=pICommandText->SetCommandText(DBGUID_DEFAULT,L"SELECT * FROM MUTOUTYPE WHERE MuTouID = 1");
if(FAILED(hr))
{
goto Exit;
}
hr=pICommandText->Execute(NULL,IID_IRowsetChange,NULL,NULL,(IUnknown**)& pIRowsetChange);
if(FAILED(hr))
{
goto Exit;
}
将字符串改为下面格式时:
int iNum=1;
str.Format(L"SELECT * FROM MUTOUTYPE WHERE MuTouID = '%d'",iNum);
hr=pICommandText->SetCommandText(DBGUID_DEFAULT,str.AllocSysString());
if(FAILED(hr))
{
goto Exit;
} hr=pICommandText->Execute(NULL,IID_IRowsetChange,NULL,NULL,(IUnknown**)& pIRowsetChange);
if(FAILED(hr))
{
goto Exit;
}
执行到Execute语句完,hr=DB_E_CANTCONVERTVALUE 出错,
请问L"SELECT * FROM MUTOUTYPE WHERE MuTouID = 1"与
L"SELECT * FROM MUTOUTYPE WHERE MuTouID = '1'"语句有何区别呢?
在程序的字符串中如何将'1'改为1呢?
这里把%d两边的单引号去掉啊。
如果加单引号,那么就认为字段是字符串类型,没有单引号则认为是整型