我用CDatabase::openEx()打开数据库(ODBC已设置)
创建CRecordset对象record,并初始化
调用record.open()时出错(编译通过,运行时发生中断错误)
请问什么,调用顺序或方法有什么要注意的吗?

解决方案 »

  1.   


    CDatabase my_DB;
    CRecordset m_data;

    CString lpSQL = "";
    CString DSN = _T(ODBCDSN);
    try
    {
    my_DB.OpenEx(DSN);
    if (my_DB.IsOpen())
    {
    m_data.m_pDatabase = &my_DB;
    m_data.Open(CRecordset::forwardOnly,lpSQL);
                      ....
                     }        }
    catch(CDBException* pe)
    {
      AfxMessageBox(pe->m_strError);
      if (m_data.IsOpen())
      m_data.Close();
    if (my_DB.IsOpen())
      my_DB.Close();
      }
      

  2.   

    try{
    }
    catch(CDBException* pe)
    {
        AfxMessageBox(pe->m_strError);
    }
    看看是什么错误。
      

  3.   

    有时是因为 SQL语句写的不对 替换成最简单的 SQL语句试下
      

  4.   

    我用了2楼的那段代码 在运行到my_DB.OpenEx(DSN);时,还是会提示选择数据源,怎么解决?
      

  5.   

    报的什么错,是你的组建没有初始化还是怎么回事你用的MFC应该不会有这种问题!
      

  6.   

    Crecordset的open函数第一个参数是设置用何种方式去访问你的查询结果(比如ForwardOnly只能前向查询Crecordset),这跟具体的ODBC驱动有关,你可能使用了不支持的参数类型。