用ODBC中的AddNew()问题
在一个空表中准备写入新数据,有些直接有AddNew()则没问题,有些却是在VC中出现异常,调试到.Update()时就发现违法访问.问题一是,写第一个数据会出现异常提示,但数据可正常插入,写第二个数据后就完全没问题,再也不提示异常.
问题二是,为什么在一些空表中没有问题,在另一表中却有问题.
Help me! void CAdminDlg::OnButtonAdd()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_strWorkID.IsEmpty()||m_strUsername.IsEmpty()||m_strPassword.IsEmpty())
{
MessageBox("Please input all the imformation!");
return;
}
if(!m_db.IsOpen())
{
m_db.OpenEx("DSN=Library;UID=sa;PWD=1",0);
}
CAdminSet * m_pset=new CAdminSet(& m_db);
CString strSQL;
strSQL.Format("select * from Admin_Info where WorkID='%s'",m_strWorkID);
m_pset->Open(CRecordset::dynaset,strSQL);
if(m_pset->GetRecordCount()!=0)
{
MessageBox("The user is existed in the database!");
m_pset->Close();
return;
}
m_pset->Close();
strSQL.Format("select * from Admin_Info");
m_pset->Open(CRecordset::dynaset,strSQL);
//insert into database
m_pset->AddNew();
m_pset->SetFieldNull(&(m_pset->m_WorkID),FALSE);
m_pset->m_WorkID=m_strWorkID;
m_pset->SetFieldNull(&(m_pset->m_User_Name),FALSE);
m_pset->m_User_Name=m_strUsername;
m_pset->SetFieldNull(&(m_pset->m_Password),FALSE);
m_pset->m_Password=m_strPassword;
m_pset->Update();
m_pset->Requery();
m_pset->Close();
m_db.Close();
MessageBox("Add new user successfully!");
UpdateData(FALSE);
return;
}
这个可以把第一个数据写入,且没有异常! void CBorrowDlg::OnButtonLend()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_strProofID==""||m_strBookID=="")
{
MessageBox("Please input the imformation correctly!");
m_strProofID="";
m_strBookID="";
return;
}
if(!m_db.IsOpen())
{
m_db.OpenEx("DSN=Library;UID=sa;PWD=1",0);
}
CBorrowSet * m_pset3=new CBorrowSet(& m_db);
CString strSQL;
strSQL.Format("select * from Borrow_Info");
m_pset3->Open(CRecordset::dynaset,strSQL);
//Add borrow imformation to database
m_pset3->AddNew();
m_pset3->SetFieldNull(&(m_pset3->m_Borrow_ID),FALSE); m_pset3->m_Borrow_ID=m_iBorrowID;
m_pset3->SetFieldNull(&(m_pset3->m_Proof_ID),FALSE);
m_pset3->m_Proof_ID=m_strProofID;
m_pset3->SetFieldNull(&(m_pset3->m_Book_ID),FALSE);
m_pset3->m_Book_ID=m_strBookID;
m_pset3->SetFieldNull(&(m_pset3->m_Borrow_Date),FALSE);
CTime time = CTime(m_cdtBorrowdate.GetYear(),m_cdtBorrowdate.GetMonth(),m_cdtBorrowdate.GetDay(),
m_cdtBorrowdate.GetHour(),m_cdtBorrowdate.GetMinute(),m_cdtBorrowdate.GetSecond());
m_pset3->m_Borrow_Date=time;
m_pset3->Update(); //更新出现问题,但找不出来。
m_pset3->Requery();
m_pset3->Close();
m_db.Close();
MessageBox("Borrow successfully!");
UpdateData(FALSE);
return;
}
这个当是第一个数据插入时,会出现异常,但数据还是可插入到数据库中.
第二个插入后完全没异常提示!
[ 本帖最后由 九月鹰飞 于 2008-6-25 12:06 编辑 ] 救命呀,各位老大! 不懂 楼下来 会不会是数据库约束造成的失败? 应该不是,如果是约束造成的,那第二次执行时也应该出现异常,但现在是第一次有第二次后就没有了!
页:
[1]