有如下代码:
pConnection.CreateInstance(__uuidof(Connection));
try
{
pConnection->Open(ConnectionStr,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库是否在指定路径下!");
return FALSE;
}     
pCommand.CreateInstance(__uuidof(Command));
pCommand->ActiveConnection = pConnection;  // 将库连接赋于它
pCommand->CommandText = SqlText;  // SQL语句
SqlText = "Insert into OperatorInfoTable (OperatorID, Password) Values (\"q\", \"q\")";
pCommand->CommandText = _bstr_t(SqlText);

pCommand->CommandType = adCmdText;
try
{
pCommand->Execute(NULL, NULL,adCmdText); // 执行SQL语句,返回记录集      
}
catch (_com_error e)
{
                  return FALSE
}现在在pCommand->Execute(NULL, NULL, adCmdText);时出现异常,不能插入记录至ACCESS表中,我捕获到的异常e.ErrorMessage显示“cannot display value”我调用的SQl语句的语法是正确的,在Access的Sql查询中可以运行并添加记录。同时如果不执行该条Sql语句,把变量SqlText的内容换成查询或是删除的Sql语句,也可以通过pCommand->Execute(NULL, NULL,adCmdText); 正常执行,说明数据库的连接都是完全正确的,请问我这个异常到底是怎么产生的,“cannot display value”的含义是什么???
谢谢!!

解决方案 »

  1.   

    附加:我的SqlText 也尝试过"Insert into OperatorInfoTable (OperatorID, Password) Values ('q', 'q')";,但也不成,而这两种语句在ACCESS中都可以正常的执行!
      

  2.   

    Values (\"q\", \"q\")"你把双引号换成单引号试试,Values (‘q’, ‘q’)"
      

  3.   

    ADO没用过,不过在DAO中我遇到过相同问题,后来使用CDaoQueryDef类来执行类似的操作的:CDaoQueryDef def( ... );
    strSql.Format( _T( "UPDATE [销售单] SET [付款状态] = '%s' WHERE [付款状态] = '%s' AND [客户] = '%s'" ), IDS_ALREADY_PAY, IDS_NOT_PAY, m_strCustomer );
    def.Create( NULL, strSql );
    def.Execute();
    def.Close();你可以看看ADO中是否有类似的类可用。