⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adoadodlg.cpp

📁 用ado连接数据库access的详细代码(可能还有一些功能有待完善
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	{
		// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
		m_pRecordset->MoveFirst();
		m_pRecordset->Move(long(curSel));
		
		var = m_pRecordset->GetCollect("Name");
		if(var.vt != VT_NULL)
			m_Name = (LPCSTR)_bstr_t(var);//////m_Name,m_Age等要做定义
		////在对话框中新建几个按键  并代表申明变量 m_Name,m_Age
		var = m_pRecordset->GetCollect("Age");
		if(var.vt != VT_NULL)
			m_Age = (LPCSTR)_bstr_t(var);
		
		var = m_pRecordset->GetCollect("Num");
		if(var.vt != VT_NULL)
			m_Num = (LPCSTR)_bstr_t(var);
		
		UpdateData(false);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	
}

//--------------------------------插入数据---------------------
//-------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////
////步骤:1 调用AddNew()新增一个空记录集
//////////2 调用PutCollect(字段名,值)输入每个字段的值
//////////3 调用Update()更新数据库中的数据
///////


void CADoADoDlg::OnWriteAccess() 
{
     
    UpdateData();
	if(m_Name == "" || m_Age == "" || m_Num == "")
	{
		AfxMessageBox("姓名,年龄和成绩信息不能为空!");
		return;
	}
	
	
	//检验年龄是否正确
	long age;
	age=atol(m_Age);

	if(age<0 || age>150)
	{
		AfxMessageBox("“年龄”错误,请重新输入“0~~150的年龄”!");
		m_Age="";
		UpdateData(false);
		GetDlgItem(IDC_AGE)->SetFocus();
		return;
	}
    ///检验成绩是否正确
	long num;
	num=atol(m_Num);
	if(num<0||age>100)
	{
		AfxMessageBox("“成绩”错误,请重新输入“0~~100的成绩”!");
		m_Num="";
		UpdateData(false);
		GetDlgItem(IDC_NUM)->SetFocus();
		return;
	}
	//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	//因为它有时会经常出现一些想不到的错误。
/*	try
	{
		// 写入各字段值
        
		m_pRecordset->AddNew();
		m_pRecordset->PutCollect("Name", _variant_t(m_Name));
		m_pRecordset->PutCollect("Age", atol(m_Age));
        m_pRecordset->PutCollect("Num", atol(m_Num));
		m_pRecordset->Update();
		
		AfxMessageBox("插入成功!");
	 //  sndPlaySound ("001.wav",SND_ASYNC );
		// 更新显示其库内容
		int nCurSel = m_AccessList.GetCurSel();
		ListData();///显示出来
		m_AccessList.SetCurSel(nCurSel);
		// 移动记录指针到新的位置
		OnSelchangeListaccess();
	}
*/
	//因为它有时会经常出现一些想不到的错误。
	try
	{
		// 写入各字段值
		m_pRecordset->AddNew();
		m_pRecordset->PutCollect("Name", _variant_t(m_Name));
		m_pRecordset->PutCollect("Age", atol(m_Age));
		m_pRecordset->Update();

		AfxMessageBox("插入成功!");

		// 更新显示其库内容
		int nCurSel = m_AccessList.GetCurSel();
		ListData();///显示出来
		m_AccessList.SetCurSel(nCurSel);
		// 移动记录指针到新的位置
		OnSelchangeListaccess();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}
//////////////////////////////////////////////////////////////////////////////
//名称:OnModify
//功能:修改并更新当前记录值
/////////////////////////////////////////////////////////////////////////////
//////1  调用PutCollext(字段名,值)给当前记录行的每个字段赋新值
//////2  调用UPdate()更新数据库中的数据
//////////////////////////////////////////////
void CADoADoDlg::OnModify() 
{

	
	UpdateData();
	if(m_AccessList.GetCount()==0||m_Name == ""||m_Age ==""||m_Num == "")
	{
		AfxMessageBox("表中记录数为空或姓名,年龄和成绩信息没有设置!!");
		return;
	}
	else if(m_AccessList.GetCurSel()<0 || m_AccessList.GetCurSel()>m_AccessList.GetCount ())
		
		m_AccessList.SetCurSel (0);
	//检验年龄是否正确
	long age;
	age=atol(m_Age);
    long num;
	num=atol(m_Num);
	if(age<0 || age>150)
	{
		AfxMessageBox("“年龄”错误,请重新输入“0~~150的年龄”!");
		m_Age="";
		UpdateData(false);
		GetDlgItem(IDC_AGE)->SetFocus();
		return;
	}
	
    ///检验成绩是否正确
	//	long num;
	//	num=atol(m_Num);
	if	(num<0|| num>100)
	{
		AfxMessageBox("“成绩”错误,请重新输入“0~~100的成绩”!");
		m_Num="";
		UpdateData(false);
		GetDlgItem(IDC_NUM)->SetFocus();
		return;
	}
	// 修改当前记录的字段值
	try
	{
		
		m_pRecordset->PutCollect("Name", _variant_t(m_Name));
		m_pRecordset->PutCollect("Age", atol(m_Age));
        m_pRecordset->PutCollect("Num", atol(m_Num));
	//	m_pRecordset->PutCollect("Time",_variant_t(m_Time ));
		m_pRecordset->Update();
		
		
		// 重新读入库记录更新显示
		int nCurSel = m_AccessList.GetCurSel();
		ListData();///显示出来
		m_AccessList.SetCurSel(nCurSel);
		// 移动记录指针到新的位置
		OnSelchangeListaccess();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage ());
	}
	
	
}

void CADoADoDlg::OnDelete() 
{
	
	if(m_AccessList.GetCount()==0)
		return;
	else if(m_AccessList.GetCurSel()<0 ||m_AccessList.GetCurSel()>m_AccessList.GetCount ())
		m_AccessList.SetCurSel (0);
	try
	{
		// 删除当前行记录
		m_pRecordset->Delete (adAffectCurrent);
		m_pRecordset->Update ();
		// 删除列表中当前值
		int nCurSel = m_AccessList.GetCurSel();
		m_AccessList.DeleteString(nCurSel);
		if(nCurSel ==0&&(m_AccessList.GetCount ()!=0))
			m_AccessList.SetCurSel (nCurSel);
		else if(m_AccessList.GetCount ()!=0)
			m_AccessList.SetCurSel (nCurSel-1);
		// 移动记录指针到新的位置
		OnSelchangeListaccess();
		
	}
	catch (_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage ());
	}
	
}


void CADoADoDlg::OnButton1() 
{
	
	UpdateData(TRUE);
	
	//构造Sql语句
	CString strSql;
	if(m_Name != "" && m_Age != ""&& m_Num !="")
		strSql.Format("SELECT * FROM 数表 WHERE Name = '%s' AND Age = '%s' AND Num ='%s'",
		m_Name,m_Age,m_Num);
	
	//	
	//	if(m_Name !="" && m_Age != "" && m_Num !="")
	//	strSql.Format ("SELECT * FROM 数表 WHERE  Num ='%s'",m_Num);
	/*	else if(m_Name != "" && m_Age == "" && m_Num == "")
	strSql.Format("SELECT * FROM 数表 WHERE Name = '%s'",m_Name);
	
	  else if(m_Name == "" && m_Age != "" && m_Num == "")
	  strSql.Format("SELECT * FROM 数表 WHERE Age = '%s'",m_Age);
	  
		else if(m_Name == "" && m_Age == "" && m_Num != "")
		strSql.Format("SELECT * FROM 数表 WHERE Num = '%s'",m_Num);
		
		  else if(m_Name != "" && m_Age != "" && m_Num == "")
		  strSql.Format("SELECT * FROM 数表 WHERE Name = '%s'AND Age ='%s'",m_Name,m_Age);
		  
			else if(m_Name == "" && m_Age != "" && m_Num != "")
			strSql.Format("SELECT * FROM 数表 WHERE Age = '%s' AND Num ='%s'",m_Age,m_Num);
			
			  else if(m_Name != "" && m_Age == "" && m_Num != "")
			  strSql.Format("SELECT * FROM 数表 WHERE Name =''%' AND Num = '%s'",m_Name,m_Num);
			  
				else
				strSql = "SELECT * FROM 数表";
	*/
	try
	{
		//先关闭已经打开的记录集对象
		m_pRecordset->Close();
		
		//根据新的Sql查询语句,重新打开记录集对象
		m_pRecordset->Open(strSql.AllocSysString(),                
			theApp.m_pConnection.GetInterfacePtr(),
			adOpenDynamic,
			adLockOptimistic,
			adCmdText);
	}
	
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	
	//将查询后得到的新记录集显示出来
	ListData();

}



void CADoADoDlg::Ontuichu() 
{
		if (IDNO == MessageBox("真的要结束吗?", "系统提示", MB_YESNO))
		{
			//PostQuitMessage(0);
			return;
		}
		CADoADoDlg::OnOK();
	
}

void CADoADoDlg::Onmusic() 
{

sndPlaySound ("001.wav",SND_ASYNC );
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -