我在用VC设计一个数据库程序时,想通过SQL语句创建一个数据库表,我用的是DBAS FILES 数据库,按照书上说的办法是应该可以创建的但是我做不出来,编译可以通过,但是一运行就非法操作。有谁可以告诉我详细的创建方法,最好附例程。

解决方案 »

  1.   

    应当是createinstance呀OPEN时参数问题/你用可用try 看看出错信息的内容
      

  2.   

    CoInitialize(NULL) ;
    HRESULT hr = m_Connection.CreateInstance(__uuidof(Connection));
    try{
    hr=m_Connection->Open(_bstr_t("连接参数"),_bstr_t("用户名"),_bstr_t("口令"),-1);
    }
    catch(_com_error & e) 
    {
                   e.Description();
    }
      

  3.   

    出现非法操作,我的经验是某条语句的某个参数有问题,
    建议:逐步执行,或用try,找到错误参数,看msdn.
      

  4.   

    CoInitialize(NULL);
    //创建connection对象
    m_connect.CreateInstance("ADODB.Connection");
        
    CString strConnection="Provider=MSDAORA;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST="+server+")(PORT="+port+"))(CONNECT_DATA=(SID="+dbname+")));User ID="+UID+";Password="+pass;
    try
    {
    if(m_connect==NULL)
    AfxMessageBox("cuosu");
    HRESULT hr=m_connect->Open((_bstr_t)LPCSTR(strConnection),"","",adModeUnknown);
    if(SUCCEEDED(hr))
    {
    AfxMessageBox("连接成功!");
    return FALSE;
    }
    else
    AfxMessageBox("连接失败");
    return FALSE;
    }
    catch (_com_error e)
    {
    CString mm;
    mm.Format("打开数据库出错!%s,%d,%d",e.ErrorMessage(),__FILE__,__LINE__);
    AfxMessageBox(mm);
    return FALSE;
    }
    //释放COM
    CoUninitialize();
      

  5.   

    我的经验是,不要用cstring。用_bstr_t就好了。和用CString一样方便(至少对你的应用来说)。你可以试试_bstr_t bstrTemp = (_bstr_t)LPCSTR(strConnection);,看看bstrTemp的值。它将不是你所期待的。