数据源注册采用DLL方法的SQLConfigDataSource  然后添加下面的代码:
         CDatabase m_db;
m_db.Open(NULL,FALSE,FALSE,_T("db"),TRUE);//连接数据库
CMySet m_set(&m_db);
if(m_set.IsOpen())
m_set.Close();
m_set.Open();                          //打开数据库
m_set.AddNew();                        //添加记录
UpdateData(true);
m_set.m_NO=m_no;
m_set.m_NAME=m_name;
m_set.m_AGE=m_age;
m_set.Update();
m_set.Requery();   数据项也已经绑定:
         RFX_Text(pFX,_T("[NO]"),m_NO);
RFX_Text(pFX,_T("[NAME]"),m_NAME);
RFX_Int(pFX,_T("[AGE]"),m_AGE); 编译连接没有错误,第一次运行程序意外终止,以后的编译连接就会出错。错误代码为:
  LINK : fatal error LNK1168: cannot open Debug/Db2.exe for writing 请问我的代码哪里出了问题?

解决方案 »

  1.   

    好像是你的程序db2.exe没有完全结束。看看进程里有没有。
      

  2.   

    那为什么不能结束呢?是不是程序有问题啊?
     
     我看过任务管理器,进程列表中没有db2。exe的进程。
      

  3.   

    我再运行,运行错误,系统的debug调试出现下面的提示:
    void CRecordset::BuildSelectSQL()
    {
    ASSERT_VALID(this);
    ASSERT(m_hstmt != SQL_NULL_HSTMT); // Ignore queries with procedure call keyword or output param
    if (!(_tcsnicmp(m_strSQL, _afxCall, lstrlen(_afxCall)-1) == 0 ||
    _tcsnicmp(m_strSQL, _afxParamCall, lstrlen(_afxParamCall)-1) == 0))
    {
    // Ignore queries already built
    if (_tcsnicmp(m_strSQL, _afxSelect, lstrlen(_afxSelect)-1) != 0)
    {
    // Assume m_strSQL specifies table name
    ASSERT(m_nFields != 0);//*错误的地方*// CString strTableName;
    strTableName = m_strSQL;
    m_strSQL.Empty();
    m_strSQL = _afxSelect; // Set all fields dirty. AppendNames only outputs dirty field names
    SetFieldDirty(NULL);
    if (AppendNames(&m_strSQL, _T(",")) == 0)
    {
    TRACE0("Error: no field names - at least 1 required.\n");
    ThrowDBException(AFX_SQL_ERROR_EMPTY_COLUMN_LIST);
    } // Overwrite final ',' separator with ' '
    ASSERT(m_strSQL[m_strSQL.GetLength()-1] == ',');
    m_strSQL.SetAt(m_strSQL.GetLength()-1, ' '); m_strSQL += _afxFrom;
    m_strSQL += strTableName;
    }
    }
    }
      

  4.   

    用try{} catch()  {} 测试,去在线msdn那里复制一个全面的扑捉错误信息的异常程序。(有关方面的)
    还有MessageBox()/AfxMessageBox()测试输出有关信息,很有帮助的。
      

  5.   

    CDatabase::Open()第一个参数是数据源哪,怎么为NULL?
    CMySet 里有没有设定m_nFields的值?