用odbc连ms sql server怎么没法对表进行更新呢?

解决方案 »

  1.   

    m_t.Open();
    m_t.AddNew();
    m_t.m_id="ok";
    m_t.Update();
    这是一段测试代码
      

  2.   

    CString CT::GetDefaultConnect()
    {
    return _T("ODBC;UID=sa;PWD="";DSN=temp");
    }
    这边这样填对吗?
      

  3.   

    m_t.Open();
    m_t.m_id="ok";
             m_t.AddNew();
    m_t.Update();
    //颠倒一下
      

  4.   

    CString CT::GetDefaultConnect()
    {
    return _T("ODBC;UID=sa;PWD=;DSN=temp;"); //密码为空的话直接不用写,不要加双引号。
    }
    m_t.Open();
    m_t.AddNew();
    m_t.m_id="ok";
    m_t.Update();
    顺序是对的,你可以单步调试一下,看问题出在那一行。另外看一下你的数据表中是否有步允许为空的字段?
      

  5.   

    我就只有一个字段来测试的,单步时到AddNew()就直接出错了,说记录集是只读
      

  6.   

    sa是SQL SERVER安装结束后自动建立的管理用户
      

  7.   

    CString CT::GetDefaultSQL()
    {
    return _T("[dbo].[temp]");
    }
    那为什么生成的代码又是用的dbo这个用户名呢?
      

  8.   

    CString CT::GetDefaultSQL()
    {
    return _T("[temp]");  //将[dbo].去掉也可以
    }用sa用户访问还提示“只读”?没碰到过。你将数据库删除后重建一下试试。(也可以换个数据库的名称)
      

  9.   

    CCT::CCT(CDatabase* pdb)
    : CRecordset(pdb)
    {
    //{{AFX_FIELD_INIT(CCommWordSet)
    m_id = _T("");
    m_nFields = 1;
    //}}AFX_FIELD_INIT
    m_nDefaultType = snapshot;   //看看你的程序中这儿是snapshot吗?
    }不行的话看你的短消息
      

  10.   

    非常感谢 jnxulei(石头) ( 的热心帮助,次问题已得到解决,该成snapshot就可以了,万分感谢,无以为报,仅以分代,以后有问题还请多多指教:)