目录
概述 2
开始编写一个数据库应用程序: 2
建立一个数据库应用程序 2
对数据库的操作: 3
1.打开数据库: 3
2.查询: 3
3.更新数据库: 4
4.添加数据: 4
5. UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
DWORD dwOptions = none
);
nOpenType打开方式,包括以下方式:
CRecordset::dynaset
CRecordset::snapshot
CRecordset::dynamic
CRecordset::forwardOnly
lpszSQL,打开数据库的m_strFilter;
这个变量的作用体现在查找的时候。变量的值取m_pSet->Close();
m_pSet->Open();
while(m_pSet->IsEOF()){
*/
出查询结果
/
_pSet->MoveNext();
}
m_pSet->m_ strFilter = _T(“”);//void Close( ); BOOL IsEOF( ) const;
功能显然易见,不多少。
另外补充几个函数:
CRcordSet:: IsBOF();::MoveFirst();CRcordSet::Update() 函数,完成更新,这时候程序会自动将修改的结果写入数据库而不用你操心。当然,在更新数据库之前,你需要查找到你需要更新的元组(也称为记录),使用上面的查询方法。
4.
m_pSet->m_TestName = “TestName1”;
m_pSet->m_TestCode = “TestCode1”;
m_pSet->m_TestOthers = “Other Codes”;
m_pSet->Update();
如你所见,代码又一次很荣幸的被“夹在”了AddNew()和Update()之间。类似更新,首先告诉系统我要添加数据了(AddNew()),系统很无赖的给了你一块内存空间,让你可以对新的记录属性进行赋值,完了之后你又要告诉系统你已经搞定了,系统就不得不屁颠屁颠的去给你把数据写进数据库中(当然这之前会检测数据是否符合数据库的完整性约束)(Update())。添加操作到此完成。
5.
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();
if(rsCustSet.IsEOF() || !rsCustSet.CanUpdate() ||
!rsCustSet.CanTransact())
{
return;
}
m_dbCust.BeginTrans();
// Perhaps scroll to a new record…
// Delete the current record
rsCustSet.Delete();
// Finished commands for this transaction
if(IDYES == AfxMessageBox(_T(“Commit transaction), MB_YESNO))
m_dbCust.CommitTrans();
else // User changed mind
m_dbCust.Rollback();
写的这么工整,肯定是出自 后面的内容了,废话少说,看例子:
Example“[L Name], ContactFirstName”);
Got it/p>
程序中表名,数据库名亦然。
说了这么多其实都是
出于个人习惯,这里说“手动”连接数据库使用这两个类,当然你也可以使用void CLoginDlg::OnOK()
{
UpdateData(TRUE);
CDaoDatabase cdb;
CDaoRecordset *m_pSet;
COleVariant cv;
//CString nullchar=” “;
/*调用CdaoDatabase::Open() */
cdb.Open(“Student_Score”,FALSE,TRUE,“ODBC=;”);
/*
初始化m_pSet变量,当然,这个必须要使用m_pSet = new CDaoRecordset(&cdb);
CString Sqlstr;
if(GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2)==IDC_RADIO1)
{
/*
如果登录用户选择的为学生
*/
/*
这老长的一串其实只是在写打开的 /*
“正式的调用CdaoRecordset::Open()” 函数,第一个参数表示打开方式,动态打开,第二个参数为打开数据库的if(!m_pSet->IsEOF()){//
m_pSet->Close();
cdb.Close();
CDialog::OnOK();
}
else
MessageBox(“}
else{
Sqlstr = “select AdminName,Password from Admin where AdminName='” + m_UID + “‘ AND Password='” + m_UPW + “‘”;
m_pSet->Open(dbOpenDynaset,Sqlstr,NULL);
if(!m_pSet->IsEOF()){
//MessageBox(“isAdmin = true;
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!