vs20003使用ADO连接ACCESS数据库 不能插入值  可以读出表中的值 但是插不进去 
 int index;
 index=((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();
 ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetLBText(index,str_Name);//---取得combobox、的值  ::CoInitialize(NULL);
  HRESULT hr;
     

try
   {

hr=m_pConnection1.CreateInstance(__uuidof(Connection));///创建Connection对象 m_pRecordset1.CreateInstance(__uuidof(Recordset));//--创建Recordset对象的实例 if(SUCCEEDED(hr))
{
                
hr = m_pConnection1->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=PLSS.mdb","","",adConnectUnspecified);///连接数据库

m_pRecordset1->Open(_T("SELECT * FROM ShapeLayer"),_variant_t((IDispatch *)m_pConnection1,true),adOpenDynamic,adLockOptimistic,adCmdText);
               

            
if(!m_pRecordset1->adoEOF)
  m_pRecordset1->MoveLast();
               
m_pRecordset1->AddNew();
m_pRecordset1->PutCollect(_variant_t("LayerID"),_variant_t((long)1));
m_pRecordset1->PutCollect(_variant_t("Name"),_variant_t(m_name));

m_pRecordset1->PutCollect(_variant_t("Type"),_variant_t("r"));
m_pRecordset1->PutCollect(_variant_t("TableName"),_variant_t("r"));
m_pRecordset1->PutCollect(_variant_t("TextField"),_variant_t("r"));
m_pRecordset1->PutCollect(_variant_t("XMin"),_variant_t(long(213)));
m_pRecordset1->PutCollect(_variant_t("XMax"),_variant_t(long(213)));
m_pRecordset1->PutCollect(_variant_t("YMin"),_variant_t(long(213)));
m_pRecordset1->PutCollect(_variant_t("YMax"),_variant_t(long(213)));
m_pRecordset1->PutCollect(_variant_t("GridSize"),_variant_t("r"));
m_pRecordset1->PutCollect(_variant_t("VisibleThreshold"),_variant_t("r"));
 //m_pRecordset->GetFields()->GetItem("Name")->AppendChunk(_variant_t(m_name));
AfxMessageBox("asd"); }
       
}
catch(_com_error e)///捕捉异常
{ CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息 }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
//---关闭记录集
  m_pRecordset1->Update();
  m_pRecordset1->Close();
                    m_pConnection1->Close();   m_pRecordset1.Release();
  m_pConnection1.Release();
          
  m_pConnection1=NULL;
  ::CoUninitialize();   UpdateData(false);提示我连接数据库错误 IDispatch  error #3081
哪里错误啊  指点啊 要不就是

解决方案 »

  1.   


    m_pRecordset1->Open(_T("SELECT * FROM ShapeLayer"),_variant_t((IDispatch *)m_pConnection1,true),adOpenDynamic,adLockOptimistic,adCmdText);->m_pRecordset1->Open("SELECT * FROM ShapeLayer",theApp.m_pConnection1.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
      

  2.   

    可以参考下
    http://download.csdn.net/source/2848883
      

  3.   

    errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
    //->
    errormessage.Format("连接数据库失败!\r\n错误信息:%s",(LPCTSTR)e.Description());
      

  4.   

    好了 ,但是怎么使用ADO 动态的创建一个新的表呐  
      

  5.   

    strCreateT.Format("create table %s ( OBJECTID number(6),Name varchar(20));",str_Name); 
                                    m_pRecordset1->Open((_bstr_t)strCreateT,_variant_t((IDispatch *)m_pConnection1,true),adOpenDynamic,adLockOptimistic,adCmdText);然后直接插值  
    if(!m_pRecordset1->adoEOF)
        m_pRecordset1->MoveLast();

    m_pRecordset1->AddNew();
    m_pRecordset1->PutCollect(_variant_t("OBJECTID"),_variant_t(m_ID));
    m_pRecordset1->PutCollect(_variant_t("Name"),_variant_t(m_name));
    有错误  不对  
      

  6.   

    Create Table仅仅是创建表,要添加记录用需要用select打开记录.
    m_pConnection1->Excute(strCreateT, NULL, NULL, adCmdText);
    m_pRecordset1->Open(_T("select OBJECTID, Name from [Table]"),_variant_t((IDispatch *)m_pConnection1,true),adOpenDynamic,adLockOptimistic,adCmdText);