程序如下所示,希望实现的是点击对话框上的ok按钮后,将对话框上edit空间里输入的信息存入到数据库access中,采用ado连接数据库,但程序编译无错,运行也可以,但是查看数据库的时候发现里面并没有输入的数据,不知道为什么?
void cunxinxi::OnOK() 
{
// TODO: Add extra validation here
 
    GetDlgItemText(IDC_EDITid, str1);   
    GetDlgItemText(IDC_EDITname, str2); 
GetDlgItemText(IDC_EDITsex, str3); 
    GetDlgItemText(IDC_EDITbirth, str4); 
    long   stn;   
    stn=atol(str1);       if(!m_set.IsOpen())
m_set.Open(); m_set.AddNew();
m_set.m_personID=stn;
m_set.m_birth=str4;
m_set.m_name=str2;
m_set.m_sex=str3;
m_set.m_sample_path="cccc";
UpdateData(FALSE);
  
CDialog::OnOK();
}

解决方案 »

  1.   

    是否采用了事务模式?需不需要commit()或等同的操作?
      

  2.   

    少了一个 m_set.Update() 吧Call this member function after a call to the AddNew or Edit member function. This call is required to complete the AddNew or Edit operation.
      

  3.   

    之前有m_set.Update() 的时候还是不能写入到数据库里
      

  4.   

    现在改成如下程序所示,可是编译什么都没错,运行的时候一按ok按钮就出来错误,被迫中止,这是怎么回事啊?
    void cunchuxinxi::OnOK() 
    {
    // TODO: Add extra validation here
        if(m_set.IsOpen())
    m_set.Open();
    m_set.AddNew();
        m_set.m_personID=m_id;
        m_set.m_name=m_name;
        m_set.m_sex=m_sex;
        m_set.m_birth=m_age;
    m_set.m_sample_path="cccc";
        m_set.Update(); CDialog::OnOK();
    }
      

  5.   

    数据库插入语句应该是对的。
    在OnOK的一开始应该调用UpdateData(TRUE); 刷新数据到成员变量中啊。
    最好跟踪进去看看m_id,m_name这些值到底是什么。