MFC+SQL Serve实例

本文详细介绍了如何使用MFC连接SQL Server数据库,包括创建数据库、建立连接、获取选课信息、修改密码以及进行选课操作。通过创建存储过程和界面交互,实现了数据的增删查改功能。
摘要由CSDN通过智能技术生成

创建数据库

创建如下数据库
dbo.S
在这里插入图片描述
在这里插入图片描述
dbo.C
在这里插入图片描述
在这里插入图片描述
dbo.SC

在这里插入图片描述

在这里插入图片描述

注意:需要创建一个txt,并把后缀改为udl,右键属性,连接你创建的数据库,测试连接后,改回txt,获取其中字符串。

MFC连接数据库

创建MFC项目->基于对话框
这里创建的项目名称为Test
在 stdafx.h 添加以下代码:

#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF" , "adoEOF") rename("BOF", "adoBOF")

注意要在一行内,分多行需在行末加 " \ "

在 Test.h 中的 public 添加以下代码:

_ConnectionPtr m_pCon;
BOOL ConnectDataBase(CString strLinkWord);

在 Test.cpp 中的 InitInstance() 函数添加以下代码:

	CString strLinkWord = L"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=StudentManagement;Data Source=DESKTOP-EDQ3AKC";
	if (!ConnectDataBase(strLinkWord))
	{
   
		return FALSE;
	}
	AfxMessageBox(L"Succeedly!");

strLinkWord中的字符串即为你从udl中获取的字符串
在这里插入图片描述
并如图中添加dlg.m_pCon = m_pCon; 来传递指针
注意需在TestDlg.h 中先定义指针,不然会提示不存在m_pCon

我们之前声明了ConnectDataBase()函数,现在来定义它,在Test.cpp任意位置添加以下代码:

BOOL CTestApp::ConnectDataBase(CString strLinkWord)
{
   
	// TODO: 在此处添加实现代码.
	::CoInitialize(NULL);

	if (!SUCCEEDED(m_pCon.CreateInstance(__uuidof(Connection))))
	{
   
		m_pCon = NULL;
		TRACE("Failed!");
	}
	ASSERT(m_pCon != NULL);
	try
	{
   
		return SUCCEEDED(m_pCon->Open(_bstr_t(strLinkWord), _bstr_t(L""), _bstr_t(L""), adModeUnknown));
	}
	catch (_com_error & e)
	{
   
		CString str;
		str.Format(L"%s\n", e.ErrorMessage());
		AfxMessageBox(str);
		return FALSE;
	}
}

注意CTestApp改为你自己创建项目的名字

在 TestDlg.h 中的 public 添加以下代码:

	_ConnectionPtr m_pCon;
	_RecordsetPtr m_pRec;
	_RecordsetPtr DBRecordSetGet(LPCTSTR Sql);
	BOOL GetCollect(LPCTSTR Name,_variant_t& OutCol);
	
	CString m_sno;//学号
	CString m_pw;//密码

如果指针m_pCon在之前那步定义了,这里就不用重复定义

先在 TestDlg.cpp 中定义声明的两个函数:

_RecordsetPtr CTestDlg::DBRecordSetGet(LPCTSTR Sql)
{
   
	// TODO: 在此处添加实现代码.
	m_pRec.CreateInstance("ADODB.Recordset");
	m_pRec = m_pCon->Execute((_bstr_t)Sql, NULL, adCmdText);
	return m_pRec;
	//return _RecordsetPtr();
}


BOOL CTestDlg::GetCollect(LPCTSTR Name, _variant_t& OutCol)
{
   
	// TODO: 在此处添加实现代码
	_variant_t vt;
	vt = m_pRec->GetCollect(Name);
	if (vt.vt != VT_NULL) {
   
		OutCol = vt;
		return TRUE;
	}
	else
		return FALSE;
}

在这里插入图片描述
在对话框中添加2个 Edit Control
双击确定按钮,创建Button函数,添加以下代码:

	GetDlgItemText(IDC_EDIT1, m_sno);
	GetDlgItemText(IDC_EDIT2, m_pw);

	CString sql;
	sql.Format(L"exec Login '%s','%s'", m_sno, m_pw)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值