void AddData()
{
string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
            strConnection += "Data Source=";
            strConnection += Directory.GetCurrentDirectory() + (@"\Test.mdb");            //用于指定数据库文件与.exe文件在同一目录下
            OleDbConnection conn = new OleDbConnection(strConnection);            conn.Open();
            OleDbCommand cmd = new OleDbCommand("insert into Users ([UserName],[TrueName],[Address],[Mail],[Tel],[Phone],[Company],[Re])"
                + " Values ('zhang','张三','福建厦门思明区','[email protected]','0592-29668088','13860188888','厦门软件园','备注')", conn);
            cmd.ExecuteNonQuery();
            conn.Close();
}
这是用c#写的
大家帮忙改改改,使它能在vc++6.0上面运行的

解决方案 »

  1.   

    就是用vC++  oledb链接access数据库而已
      

  2.   

    _ConnectionPtr conn;
    conn.CreateInstance(__uuidof(Connection));CString strConnection = "Provider=Microsoft.Jet.OleDb.4.0;"; 
                strConnection += "Data Source="; 
                strConnection += Directory.GetCurrentDirectory() + (@"\Test.mdb"); 
    conn->Open(strConnection, _T(""), _T(""), NULL);
    CString strCmd = "insert into Users ([UserName],[TrueName],[Address],[Mail],[Tel],[Phone],[Company],[Re])" 
            strcmd += " Values ('zhang','张三','福建厦门思明区','[email protected]','0592-29668088','13860188888','厦门软件园','备注')"
    _variant_t empty;
    Conn->Execute(_bstr_t(strCmd), &empty, adCmdText);
      

  3.   

    Directory.GetCurrentDirectory
    这个是.net的库函数
    有没有用vc的表示同一目录下的
      

  4.   


    void GetCurrentPath(char* str)
    {
    char tmp[_MAX_PATH] = {0};
    GetModuleFileName(NULL,tmp,_MAX_PATH);
    char* p = strrchr(tmp,'\\');
    *(p+1) = '\0';
    memcpy(str,tmp,strlen(tmp));
    }
      

  5.   

    就是
    GetCurrentDirectory
    The GetCurrentDirectory function retrieves the current directory for the current process. DWORD GetCurrentDirectory(
      DWORD nBufferLength,  // size of directory buffer
      LPTSTR lpBuffer       // directory buffer
    );
    但小心文件对话框其实既然是相同目录,直接用相对路径不就完了?
      

  6.   

    void GetCurrentPath(char* str) 

    char tmp[_MAX_PATH] = {0}; 
    GetModuleFileName(NULL,tmp,_MAX_PATH); 
    char* p = strrchr(tmp,'\\'); 
    *(p+1) = '\0'; 
    memcpy(str,tmp,strlen(tmp)); 
    }这个函数实现了得到你可执行文件目录的功能
    得到这个字符串以后你可以把它赋值给CString strPath;的变量然后再进行字符串操作就可以了
    不好意思,写上面的代码的时候没有细看你中间用了c#的路径_ConnectionPtr conn; 
    conn.CreateInstance(__uuidof(Connection)); char szFilePath[MAX_PATH];
    GetCurrentPath(szFilePath);CString strConnection = "Provider=Microsoft.Jet.OleDb.4.0;"; 
                strConnection += "Data Source=";
                strConnection += szFilePath;
                strConnection += ("Test.mdb"); 
    conn->Open(strConnection, _T(""), _T(""), NULL); 
    CString strCmd = "insert into Users ([UserName],[TrueName],[Address],[Mail],[Tel],[Phone],[Company],[Re])" 
            strcmd += " Values ('zhang','张三','福建厦门思明区','[email protected]','0592-29668088','13860188888','厦门软件园','备注')" 
    _variant_t empty; 
    Conn->Execute(_bstr_t(strCmd), &empty, adCmdText);
      

  7.   

    我给你说个简单的方法吧,不是udl可以连接数据库吗?你先在执行文件在目录下建立一个名为myconn.udl文件,选择好数据库引擎和数据源。_ConnectionPtr conn; 
    conn.CreateInstance(__uuidof(Connection)); 
    conn->Open(_T("File Name=myconn.udl"), _T(""), _T(""), NULL);CString strCmd = "insert into Users ([UserName],[TrueName],[Address],[Mail],[Tel],[Phone],\
    [Company],[Re]) Values ('zhang','张三','福建厦门思明区','[email protected]','0592-\
    29668088','13860188888','厦门软件园','备注')" ;
    _variant_t var;
    conn->Execute(_bstr_t(strCmd.GetBuffer(0)), &var, adCmdText);其实与数据库相关的语句都是一样的,只是你用的控件是ole控件,我们是用的ado控件;还有,你用到了c#中的库函数,我这里用了udl是为了不用任何库函数,当然也用到了一个,是CString类里面的。如果你不想用udl文件,可以把该文件用记事本打开,然后把File Name=myconn.udl这一句用该文件里面的语句换了就可以了.