利用ODBC向一个库表中添加记录,由于name字段不能重复,因此name字段已经设成主键,代码如下:
CRecordset dataset;
int m;
CString m_temp,m_address,m_code,m_name; m_temp.Format( "%s%s%s", "([company].[name] = '", m_name, "')" );
dataSet.m_strFilter = m_temp;
dataSet.Open( );
m=dataSet.GetRecordCount();
/*保证name字段不会重复,如没有重复,下面的代码用于添加记录*/
if(m==0)
{
dataSet.AddNew();
dataSet.m_address = m_address;
dataSet.m_code = m_code;
dataSet.m_title = m_name;
dataSet.Update();
}
dataSet.Close( );现在的问题是每次执行到dataSet.Update(),程序都自动中断,什么原因,大家帮看看

解决方案 »

  1.   

    不懂,关注中………………,谁能告诉我什么叫ODBC编程啊?和ADO,DAO有什么区别?只有类库的不同吗?ODBC只用API?愿听解答!!!!!!!!~~~~~~~~
      

  2.   

    try
    {
       // 添加记录
    }
    catch (CDBException *e)
    {
       TRACE (e->m_strError);
       e->Delete();
    }然后在DEBUG窗口看你到底是什么异常吧.把异常信息贴出来才好判断是出什么错.
      

  3.   

    你别把name设成主键试试,不知道是不是这个原因。
      

  4.   

    name字段是主键,那么就不允许为NULLupdate()之后,因为添加新记录代码中没有发现给name字段赋值操作,所以会按照NULL赋值给name字段,这就会出错了。
    //name字段难道不给赋值吗,虽然是主键,但只要不是自增字段,肯定需要显式赋值
    dataSet.AddNew();
    dataSet.m_address = m_address;
    dataSet.m_code = m_code;
    dataSet.m_title = m_name;
    dataSet.Update();
      

  5.   

    谢谢各位,问题解决了
    ODBC开放数据库互连,通常用来访问不具备OLE-DB特性的非Microsoft数据库中的数据,一般用ADO就可以了