str7.Format("INSERT INTO t_report_point(ID,P_NAME,P_TYPE,PCTYPE,P_RECORD,P_DEPARTID,P_DESC,P_EU,P_SPEC,P_FORMULA) values(2,%s,1,%d,NULL,NULL,%s,NULL,NULL,NULL)", m_pointname, m_ctype, m_description);_variant_t sql;
sql = str7;
long hr;
try
{
hr = m_pRecordset->Open(sql,
_variant_t((IDispatch*)m_pConnection),  // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(!SUCCEEDED(hr))
{
return ;
}
}
catch(...)
{
AfxMessageBox("插入数据失败");
}
老是显示插入数据失败,是什么原因啊,我的插入语句有问题吗?

解决方案 »

  1.   

    不要用recordset执行插入语句.用connection:
    _variant_t RecordsAffected;
    m_pConnection->Execute(_bstr_t(sql),&RecordsAffected,adCmdText);另外:
    还是一样,把 
    catch(...) 

    AfxMessageBox("连接数据库失败"); 
    return; 

    改成: 
    catch(_com_error &e) 

    AfxMessageBox(e.Description()); 
    return; 
    }
      

  2.   

    用这个出现:error C2065: 'RecordsAffected' : undeclared identifier
    什么原因?
      

  3.   

    晕..你没加上:_variant_t RecordsAffected;么?
      

  4.   

    嗯..如果你不想知道SQL语句执行后所影响的数据行数,可以改成NULL
      

  5.   

    来晚了啊,是的,
    像 INSERT DELETE UPDATE 等不返回记录集的操作,
    有时候用 Connection 对象的 Execute 方法简单。
      

  6.   

    我这个str1.Format("Driver={%s};Server=%s;Port=%s;Option=3;UID=%s;PWD=%s;",
           DriverBuffer, m_serverip, m_serverport, m_username, m_password);
    只是连到了数据库的驱动,我现在要连到里面的某个具体数据库,因为下面我要在这个具体数据库的表中插入数据
      

  7.   

    没有用过这个数据库,不过按理来说,它附带的帮助信息中应该会提供ADO的连接方式。
    像 SQL SERVER 的联机帮助中明确提供了这些信息。如果 MYSQL 没有提供的话,从侧面也可以反映出来,
    微软开发平台所提供的支持非常到位,所以说选择微软就是选择放心,呵呵!