MySQL数据库,vc通过mysql-connector-odbc-3.51.23-win32 进行连接,
CDatabase   m_db_ev;
m_db_ev.ExecuteSQL("insert into ope_list(F_time,string) values(1204106136,'你好')");
执行这条语句会报错,如果把上面的语句换成
m_db_ev.ExecuteSQL("insert into ope_list(F_time,string) values(1204106136,'你好')");
就能够成功执行,请问各位大虾,怎么解决该问题?

解决方案 »

  1.   

    问题找到了,只要把驱动换成mysql-connector-odbc-5.1.2-win32.msi就行了,但是这样的话同时又带来一个新的问题,就是在3.51版本中用SQLConfigDataSource可以动态创建数据源,但是用5.1.2版本后,就不能动态创建数据源了,请问各位达人,又没有什么好的解决方法?
      

  2.   

    在注册表中创建数据源,源程序如下:
    void RegisterDBSource(CString strDSName, CString strDBPath)
    {
    HKEY hKey;
        DWORD nLabel; 

    CString strBaseKey = _T("SOFTWARE\\ODBC\\ODBC.INI");
    CString strMid = strBaseKey + _T("\\ODBC Data Sources") ;

    if(strDSName.IsEmpty()) return;
    if(strDBPath.IsEmpty()) return;

    CString strDataSource = strBaseKey + _T("\\") + strDSName;

    CString strMdb = _T("MySQL ODBC 5.1 Driver");
    CString strDBDriver = _T("C:\\Program Files\\MySQL\\Connector ODBC 5.1\\myodbc5.dll");
    CString strDescription = _T("MySQL");
    CString strUID = _T("root");
    CString strServer = _T("localhost");
    CString strPWD = _T("");



    RegCreateKeyEx(HKEY_CURRENT_USER,
    strMid,
            0, 
    NULL, 
    REG_OPTION_NON_VOLATILE, 
    KEY_ALL_ACCESS,
    NULL,
    &hKey, 
    &nLabel );//获取数据源键值句柄

    RegSetValueEx(hKey,
    strDSName,
    0,
    REG_SZ,
    (const unsigned char *)((LPCTSTR)strMdb),
    strlen((LPCTSTR)strMdb)+1);///设置数据源类型

    RegCreateKeyEx(HKEY_CURRENT_USER,
    strDataSource,
    0, 
    NULL, 
    REG_OPTION_NON_VOLATILE, 
    KEY_ALL_ACCESS,
    NULL,
    &hKey, 
    &nLabel );//创建数据源子键

    RegSetValueEx(hKey,
    _T("DATABASE"),
    0,
    REG_SZ,
    (const unsigned char *)((LPCTSTR)strDBPath),
    strlen((LPCTSTR)strDBPath)+1);//数据库的全路径

    RegSetValueEx(hKey,
    _T("Driver"),
    0,
    REG_SZ,
    (const unsigned char *)((LPCTSTR)strDBDriver),
    strlen((LPCTSTR)strDBDriver)+1);//ODBC驱动的全路径

    RegSetValueEx(hKey,
    _T("Description"),
    0,
    REG_SZ,
    (const unsigned char *)((LPCTSTR)strDescription),
    strlen((LPCTSTR)strDescription)+1);//数据库的描述

    RegSetValueEx(hKey,
    _T("UID"),
    0,
    REG_SZ,
    (const unsigned char *)((LPCTSTR)strUID),
    strlen((LPCTSTR)strUID)+1);//数据库的用户名

    RegSetValueEx(hKey,
    _T("Server"),
    0,
    REG_SZ,
    (const unsigned char *)((LPCTSTR)strServer),
    strlen((LPCTSTR)strServer)+1);//可选项 RegSetValueEx(hKey,
    _T("PWD"),
    0,
    REG_SZ,
    (const unsigned char *)((LPCTSTR)strPWD),
    strlen((LPCTSTR)strPWD)+1);//可选项
    }
    该程序非原创,帖子链接http://dev.csdn.net/develop/article/25/25607.shtm
    希望对大家有帮助