本次试验是本来是一次简单的sql做界面的任务,本来我想的是从网上找一份java的代码,直接搞出来就结束了,但是我曾在大一下整过一段时间mfc连接mysql,让我决定整一个mfc工程,诚然mfc工程基本上没人用(相比于java),所以很多内容找不到都是自己蒙出来的,写这篇博客留作纪念(备用)。
工具
本次使用的工具为Visual Studio2017和Microsoft sql server2019
准备工作
建立MFC并设置基础选项
对sql的创建
新建查询
CREATE TABLE Student (
Sno char ( 7 ) PRIMARY KEY,
Sname char ( 10 ) NOT NULL,
Ssex char (2),
Sage tinyint ,
Sdept char (20)
)
CREATE TABLE Course (
Cno char(10) NOT NULL,
Cname char(20) NOT NULL,
Ccredit tinyint ,
Semester tinyint,
PRIMARY KEY(Cno)
)
CREATE TABLE SC
(
Sno char(7) NOT NULL,
Cno char(10) NOT NULL,
Grade tinyint,
XKLB char(4) ,
PRIMARY KEY ( Sno, Cno )
)
实现数据库的连接和断开链接
通过ctrl+shift+E出现资源视图,找到其中的对话框窗口,方便操作。
通过点击“确定”和“取消”实现对OnBnClickedOk和OnBnClickedCancel的定义
因为是ADO实现
所以需要在stdaf.h中添加sock头文件并导入动态库
// ADO动态库需要使用sock头文件
#include <afxsock.h>
//下面这句是导入ADO动态库,这是必须操作的一步
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
我这里出现了个问题,第二条语句报错了
import无法打开源文件 …/msado15.tlh (msado15.dll)
这里可以通过添加数据库的头文件来解决
在MFCApplication.cpp中
BOOL CMFCApplicationApp::InitInstance()添加实现socket的接口代码
if (!AfxSocketInit())
{
return FALSE;
}
CoInitialize(NULL); //使用ADO组件时多线程加载出错需要CoInitialize
其余的就是在MFCApplicationDlg.cpp中操作了
添加ADO接口的指针
//ADO添加相关代码@4
_ConnectionPtr m_pConnection; //ADO接口指针
//ADO添加相关代码
这里需要穿插一部分内容,有关于如何对窗口进行操作的
这里是关于button
button的属性主要是caption,和(Name) ,ID,caption是按钮上显示的内容,后两者则是补全代码时会产生的属性,两者最好保持一致,添加代码后,通过双击,即可在cpp中补全代码。
回归正题
对话框是一个类,我们通过这个类和上面建立的ADO接口指针,实现对数据库的操作。
接下来我们需要实例化新建数据库,需要在现有Dlg下创建一个函数,这里我们需要使用到类向导
//ADO添加相关代码@5
//新建opendatabase以实现对数据库的操作
bool CMFCApplicationDlg::OpenDatabase()
{
// TODO: 在此处添加实现代码.
CString connString = "Provider=SQLNCLI11;Data Source=.;Integrated Security=SSPI;Initial Catalog=mfc_work";
//打开数据库
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if (SUCCEEDED(hr))
{
//连接数据库
hr = m_pConnection->Open((LPSTR)(LPCTSTR)connString, "", "", adModeUnknown);
}
}
catch (_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s", e.ErrorMessage());
// AfxMessageBox(errormessage);///显示错误信息
return false;
}
return true;
}
//ADO添加相关代码
这里我创建遇到了一个小问题,就是我的函数并没有在"MFCApplicationDlg"中声明,但通过程序可以实现在程序中的代码补全。找到问题后会解决
//ADO添加相关代码@6
bool CMFCApplicationDlg::CloseDatabase()
{
// TODO: 在此处添加实现代码.
try
{
HRESULT hr;
hr = m_pConnection->Close();
if (SUCCEEDED(hr))
{
return true;
}
return false;
}
catch (_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s", e.ErrorMessage());
// AfxMessageBox(errormessage);///显示错误信息
return false;
}
}
//ADO添加代码
这是关闭数据库
实现了处理
数据库的基本按钮设置
我们在前文中提到了button,这里我们还需要四个button,分别是增删改查,再对代码进行处理。我们首先设置基础界面。
这是我设置完的效果图,右边的树形控件下一部分再写,先完成最基本的按钮设置。
输入按钮Edit Control
修改其ID为姓名,年龄对应的ID
这个窗口是要对应一个变量的(可以作为输入,也可作为输出),所以要使用添加变量的方式添加变量m_name
效果图:
添加的效果
文章来源:https://www.toymoban.com/news/detail-440451.html
单选钮Radio Button
同时使用组合框Group Box
将其中一个旋钮的Group属性设置成Flase,并且修改ID和添加变量,这里有了Group属性设置成Flase之后,将“男”的Group属性改变成True,就可以以“男”作为起始,实现对数据的处理。
下拉按钮Combo Box
但需要在属性里进行处理,一般将Type属性修改为下拉列表
有两种方式进行初始化,第一种是在添加变量的时候设置为控件变量,但需要在代码里通过add的方式进行添加数据
另一种方式是在添加变量的时候设置成值变量,这样的话,可以在属性data数据里进行初始化。
文章来源地址https://www.toymoban.com/news/detail-440451.html
到了这里,关于MFC连接sql server的编程实现增删改查(完整版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!