MFC连接SQL数据库操作

MFC数据库管理系统编程(二) 三,数据库连接中的数据源配置       MFC中连接数据库的第一步应该设置好数据源,对于数据源的配置,可以有两种方式:手动配置和动态配置1.  手动配置:也就是在进入编程前就将ODBC数据源配置好,比较简单(略)2.  动态配置:对于用户来说,希望拿到一个软件后直接就可以使用而不用做其他的配置。因此,在程序开发的过程中,程序员应该替用户考虑将程序运行的一些外部配置集成到程序的代码中去 阅读详情

要操作SQL数据库要经过以下几个步骤:

0.建立数据库

1.配置数据源

2.数据库的连接

3.数据库的操作

4.类资料

【1】配置数据源

配置数据源一般有两种方法一种是通过注册表,一种是通过SQLConfigDataSource函数,具体操作如下:

第一种:SQLConfigDataSource函数创建数据源,包含 "ODBCINST.h"头文件

SQLConfigDataSource(NULL,ODBC_ADD_DSN,"SQL Server","DSN=SQLODBC\0");//创建数据源

第二种:注册表创建数据源,包含"afxdb.h"

CRegKey m_hKey;//注册一个操作注册表的类
m_hKey.Create(HKEY_CURRENT_USER,"Software\\ODBC\\ODBC.INI\\ODBC Data Sources");
//创建ODBC Data Sources项,此项列出的是数据源
m_hKey.SetValue("SQL Server","SQLODBC");
//设置数据源名称和数据源驱动
m_hKey.Create(HKEY_CURRENT_USER,"Software\\ODBC\\ODBC.INI\\SQLODBC");
\\创建 数据源项
\\设置数据源的详细参数
m_hKey.Open(HKEY_CURRENT_USER,"Software\\ODBC\\ODBC.INI\\SQLODBC");
m_hKey.SetValue("SQLTest","Database");
m_hKey.SetValue("C:\\Windows\\system32\\SQLSRV32.dll","Driver");
m_hKey.SetValue("Administrator","LastUser") ; 
m_hKey.SetValue("(local)","Server") ; 
m_hKey.SetValue("Yes","Trusted_Connection"); 

【2】数据库的连接

         到了MFC的阶段了,首先建立一个MFC工程,放置两个按钮,对两个按钮实现消息响应,一个名称为“连接数据库”,一个为“查询数据库信息”。

因为要使用到CDatabase类所以需要在stdafx.h中包含afxdb.h头文件。

“连接数据库”按钮的消息响应函数代码如下

连接数据源

////////////////////////////////////////连接数据库按钮代码//////////////////////////////////////////////////////////////////
CDatabase m_db;//嵌入一个CDatabase对象
CRecordset *m_dbrs;  
m_dbrs = CRecordset(&m_db);//创建一个记录集
// 连接数据源   Open的参数可以控制记录集的游标,详情看MSDN
m_db.Open("ODBC;DSN=SQLODBC;UID=SQLTest;PWD=12345678",false,false,"ODBC;",false);	
m_dbrs = new CRecordset(&m_db);	                        // 创建存放数据的记录集

【3】数据库的操作

执行SQL数据库语句:通过CDatabase执行SQL语句,不返回记录集

CString strSQL = "create table tabname(i int) ";	// 组织SQL语句
m_db.ExecuteSQL(strSQL);//执行SQL语句

修改

CString strSQL = "UPDATE test SET name = '王二', password='2222' WHERE name=100";	// 组织SQL语句
m_db.ExecuteSQL(strSQL);

插入

short index = 0;
while (index <= 100)
{
	CString str="";
	str.Format("%d",index);
	CString strSQL = "insert into test(name,password) values("+str+",3333) ";	// 组织SQL语句
	m_db.ExecuteSQL(strSQL);
	index++;
}

删除

CString strSQL = "SELECT name FROM test ";	// 组织SQL语句
m_dbrs->Open(CRecordset::dynaset, strSQL); // 用SQL查询数据库
if(!m_dbrs->IsEOF())
{
	m_dbrs->Delete();
}
 m_dbrs->Close();

查询

try
	{
		CString strSQL = "SELECT name,password FROM test ";	// 组织SQL语句
		m_dbrs->Open(CRecordset::forwardOnly, strSQL, CRecordset::readOnly); // 用SQL查询数据库
		CString *psd;
		short nFields = m_dbrs->GetODBCFieldCount();//返回字段数
//通过IsEOF函数判断记录集是否为空
//(记录集如果定位在最后的话,会返回0,详情请看CRecordset的MSDN说明)
		CDBVariant varValue;//利用CDBVariant类取得数据
		while(!m_dbrs->IsEOF())
		{//不断循环,直到
			for(short index = 0; index < nFields; index++)
			{
//将字段中的值取出 详情请看CDBVariant类成员变量介绍
				m_dbrs->GetFieldValue(index,varValue);
				psd = varValue.m_pstring;
				if (index == 0)
				{
					m_list.InsertItem(index,*psd);//插入行数据
				}
				else
				{
					m_list.SetItemText(0,index,*psd);//插入行数据
				}
			}
			m_dbrs->MoveNext();
		}
		m_dbrs->Close();// 关闭记录集
		//m_db.Close();//把关闭数据源放在关闭程序代码里
	}
	catch (CMemoryException* e)
	{

	}
	catch (CFileException* e)
	{
	}
	catch (CException* e)
	{
	}

【资料】

CDatabase类操作数据源

函数

说明

CDatabase

构造一个对象

Close

关闭数据源连接

Open

通过一个ODBC驱动程序创建到数据源的连接

OpenEx

通过一个ODBC驱动程序创建到数据源的连接

BeginTrans

开始事务

BindParameters

允许在调用CDatabase::ExecuteSQL前绑定参数

Cancel

取消异步操作或第二条线程中的过程

CommitTrans

执行事务

ExecuteSQL

执行SQL语句,不返回记录

Rollback

回滚事务,数据源返回先前的状态

该类的属性函数如下表:

属性

说明

CanTransact

如果数据源支持事务,返回非零

CanUpdate

如果CDatabase可以更新,返回非零

GetBookmarkPersistence

获得书签对记录集对象的持久性

GetConnect

返回ODBC连接串

GetCursorCommitBehavior

获得提交事务对记录集对象的影响

GetCursorRollbackBehavior

获得回滚事务对记录集对象的影响

GetDatabaseName

返回当前使用的数据库名

IsOpen

如果当前CDatabase对象连接到数据源,返回非零

SetLoginTimeout

设置数据源连接的超时数(秒为单位)

SetQueryTimeout

设置查询操作的超时数(秒为单位)

应用程序可使用多个CDatabase类型的对象。构造一个对象并调用Open()成员函数打开一个连接。接着构造CRecordset类型的对象以操作连接的数据源,构造时向记录集对象传递CDatabase类型的指针。完成使用后,用Close()成员函数销毁CDatabase类型的对象。

一般情况下并不需要直接使用CDatabase类型的对象,因为CRecordset类型的对象可以实现大多数的功能、但是在进行事务处理时,CDatabase就起到关键作用。事务(Transaction)指的是将一系列对数据源的更新放在一起,同时提交或一个都不提交,为的是确保多用户对数据源同时操作时的数据正确性。

CRecordset类操作记录集

一个CRecordset类型的对象代表从数据源选择的一组记录的集合——记录集,通过该类的方法实现对数据库中记录的各种操作。

该类常用的数据成员如下表:

成员

说明

m_hstmt

包含记录集的ODBC陈述句柄,类型为HSTMT

m_nFields

包含记录集中字段数据成员的数量,类型为UNIT

m_nParams

包含记录集中参数数据成员的数量,类型为UNIT

m_pDatabase

包含一个CDatabase对象指针,通过它访问数据源

m_strFilter

包含CString对象,定义SQL中WHERE子句

m_strSort

包含CString对象,定义SQL中ORDER BY子句

该类的构造方法如下表:

构造方法

说明

Close

关闭记录集和与之相关的HSTMT

CRecordset

构造一个CRecordset对象

Open

通过获得表或执行记录集所代表的查询来打开记录集

CRecordset类记录集属性如下表:

属性

说明

CanAppend

如果新记录可以通过Addnew添加到记录集,返回非零

CanBookmark

如果记录集支持书签,返回非零

CanRestart

如果Requery可以被调用来再次运行记录集查询,返回非零

CanScroll

如果可以在记录中回滚,返回非零

CanTransact

如果数据源支持事务,返回非零

CanUpdate

如果记录集可以被更新,返回非零

GetODBCFieldCount

返回记录集中字段的数量

GetRecordCount

返回记录集中记录的数量

GetSQL

获得SQL字符串

GetStatus

获得记录集的状态

GetTableName

获得记录集所属的表名

IsBOF

如果记录集定位在第一条记录之前,返回非零

IsDeleted

如果记录集定位在一条删除的记录,返回非零

IsEOF

如果记录集定位在最后一条记录之后,返回非零

IsOpen

如果调用过Open函数,返回非零

CRecordset类更行操作如下表:

更新操作

说明

AddNew

准备增加一条新纪录,调用Update之后完成添加

CancelUpdate

取消任何未完成的更新

Delete

从记录集中删除当前记录

Edit

准备对当前记录进行修改,调用Update后完成修改

Update

通过将新记录或编辑的数据存入数据源来完成AddNew或Edit操作

记录集有两种形式:snapshot(表示数据的静态视图)和dynaset(表示记录集与其他用户对数据库的更新保持同步)。

CFieldExchange类处理数据交换

CFieldExchange类支持数据库类所使用的记录集字段交换(RFX)程式。如果使用自定义的数据类型写数据交换程式,会使用这个类。否则不会直接使用此类。RFX在记录集对象的字段数据成员与数据源中当前记录的相应字段之间交换数据。

CRecordView类显示记录

CRecordView对象用于在控件中显示数据库记录的视图。这种视图是一种直接连到一个CRecordView对象的格式视图,它从一个对话框模板创建资源,并将CRecordView对象的字段显示在对话框模版的控件里。对象利用DDX和RFX机制,使窗体上的空间和记录集的字段值之间数据移动自动化,也就是说,用户不需要编写一行代码就可以完成简单的数据库记录查看程序。

CDBException类处理异常

由CException类派生,以3个继承的成员变量反映对数据库操作时的异常:

m_nRetCode:以ODBC返回代码(SQL_RETURN)的形式表明造成异常的原因

m_strError:字符串,描述造成抛出异常的错误原因

m_strStateNativeOrigin:字符串,用以描述以ODBC错误代码表示的异常错误

 

使用MFC ODBC编程建立应用程序

MFC ODBC编程模型概述

使用MFC ODBC访问数据库比直接使用ODBC API简单得多,编程步骤如下:

使用CDatabase打开数据源的连接,如果利用AppWizard生成一个ODBC数据库应用程序,则会自动完成操作。

使用ClassWizard向导加入由CRecordset类派生的用户记录集类,完成对数据库的绑定。

创建记录集类对象,如果利用AppWizard生成一个ODBC数据库应用程序,则会自动在文档类中创建。

使用记录及对象对数据库进行遍历、增加、删除、修改等操作。

使用CDatabase类的ExecuteSQL函数直接执行SQL命令。

使用CDatabase类的BeginTrans、CommitTrans和Rollback函数进行事务处理

使用CDatabase类的Close函数关闭数据源连接。

VS2012 连接 SQL Server 2012 Express 如何生成SQL Server以及直接操作和部署数据库先略   先看如何操作数据库 VS2012集成的功能相当强大,以前的版本可能也有,只是没在意 1)如何设置数据源(MSDN提供),当然这里也可以不设置,再后面添加类也可以设置 从“开始”菜单中,选择“设置”、“控制面板”、“管理工具”、“数据源 (ODBC)”,然后选择“ODBC 数据源管理器”。 请查看如何使用ODBC设置数据源:h 阅读详情

相关推荐

MFC+SQL Server项目——MFC+ADO操作数据库中的数据

一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。在Microsoft Visual Basic编辑器中,可以使用ADO对象以及ADO的附加组件(称为Microsoft ADO Extensions for DLL and Security(ADOX))来创建或修改表和查询、检验数据库、或者访问外部数据源。还可在代码中使用ADO来操作数据库中的数据。 ...

流楚丶格念的博客 5543

MFC SQL数据库类应用实例(实测很好用)

vc SQL数据库类 应用实例,类中包含SQL连接,查询,遍历结果集等操作。

分享型博主 544

MFC与ADO连接SQL Server数据库操作实战指南

在现代应用程序中,与数据库交互是一个不可或缺的部分。在Microsoft Foundation Class (MFC) 框架中,开发者可以利用ActiveX Data Objects (ADO) 来简化数据库访问过程。MFC作为一款成熟的应用程序框架,提供了丰富的类库,而ADO作为一个数据库访问技术,它的灵活性和强大的功能使它成为许多开发者进行数据库编程时的首选。

weixin_35636570的博客 867

MFC连接sql server的编程实现增删改查(完整版)

本次试验是本来是一次简单的sql做界面的任务,本来我想的是从网上找一份java的代码,直接搞出来就结束了,但是我曾在大一下整过一段时间mfc连接mysql,让我决定整一个mfc工程,诚然mfc工程基本上没人用(相比于java),所以很多内容找不到都是自己蒙出来的,写这篇博客留作纪念(备用)。 工具 本次使用的工具为Visual Studio2017和Microsoft sql server2019 准备工作 建立MFC并设置基础选项 对sql的创建 新建查询 CREATE TABLE Studen

LIUCOSMOSSUN的博客 2689

VC++环境下的SQL数据库操作实践指南

在本章中,我们将探索如何使用Visual C++(VC)操作SQL数据库,为后续章节的深入讨论打下基础。本章将重点介绍一个简单的实例,让读者了解基本的操作流程和关键代码片段。我们将创建一个简单的VC项目,使用ODBC(Open Database Connectivity)技术连接到一个SQL数据库。此过程中,我们将演示如何配置数据源、编写SQL查询以及执行数据的增删改查操作。是一种应用程序接口(API),由 Microsoft 在 1992 年推出,用于访问各种数据库。

weixin_42579969的博客 1028

论文理解【LLM-OR】—— 【PaMOP】Guiding Large Language Models in Modeling Optimization Problem

针对 LLM 求解运筹优化任务,PaMOP 通过约束划分树分离子问题,实现复杂优化问题的分块建模,并结合求解器反馈与反向翻译一致性检查迭代纠错,降低子任务复杂度,提升可执行率与建模准确性。

佚失的诗篇 1007

mfc连接sql server

MFC (Microsoft Foundation Class) 是微软提供的一个C++应用程序框架,它可以用来连接 SQL Server。 连接 SQL Server 的方法有多种,但最常用的是使用ODBC(Open Database Connectivity,开放数据库连接)。通过ODBC驱动程序,MFC 应用程序可以访问 SQL Server 数据库并执行各种操作,例如查询和更新。 要连接 ...

weixin_42576467的博客 849

PCB布局规范及其注意事项(纯干货)

这样做的好处是信号1,3层不会有串扰,4和5作为电源有紧密的耦合,3个信号层都有GND平面可以参考,且不会互相产生串扰,唯一的缺点是布线的层面只有3个信号层(信号03的是最适合来传输高速信号,因为该层的二面都有屏蔽,防止干扰传出,也防止干扰传入)33、影响阻抗匹配的参数(ER介电常数(1GHZ以下默认为4.2,以上的话问板厂),H介质厚度(就是内层压合的PP片厚度),W走线的线宽,T走线的厚度(铜厚/减小线的厚度可以增大阻抗))我这里使用的是CITS25来计算阻抗。

qq_42379138的博客 8848

MFC中用Ado连接数据库

 VC++中使用MFC通过ADO连接数据库方法小结(不包括异常的捕捉)这里主要讲MFC与SQL2000数据库的连接。1.在StdAfx.h头文件中加入此句子#import "c:/program files/common files/system/ado/msado15.dll"/ no_namespace rename("EOF","adoEOF")2.在App类的InitInstanc

guomei的专栏 3290

Maya vray 3S皮肤材质球设置与材质节点连接

Maya vray 3S皮肤材质球设置与材质节点连接

WETQETF的博客 2697

2026零成本私有化:OpenClaw一键搭建Discord/Telegram智能机器人,数据不出本地,永久免费替代ChatGPT

如果内置的功能不能满足你的需求,你可以很容易地添加自己的自定义工具。public string Description => "查询指定城市的天气";// 调用天气API获取天气信息return $"city今天的天气是晴,温度25度";// 注册工具今天北京的天气怎么样?大模型的选择很重要:不要盲目追求大参数的模型。对于大多数场景来说,7B参数的模型已经足够用了,而且速度快,内存占用低。上下文长度不要设置太大:上下文长度越大,内存占用越高,推理速度越慢。

2601_94871597的博客 261

MFC之ODBC操作数据库

在MFC中,有CDatabase类可以操作数据库。 首先要引入头文件:#include <afxdb.h> 然后创建一个类: CDatabase mdb;或者CDatabase *mdb = new CDatabase; 然后连接数据库,我这里有一个自己封装的现成的函数: BOOL OpenDB(CDatabase *mdb) { if (mdb->IsOpen()) { mdb->Close(); } try { BOOL result = mdb->Open(

canlynetsky的博客 2436

【智能体评测】BrowserUse:一款超越 Anthropic Computer Use 的开源智能体

本文将全面介绍 BrowserUse 的核心功能、配置与使用方法,以及通过多场景测试评估其性能。

surfirst的博客 4099

MFC使用ado连接SQLserver

做个小工具,记录MFC中用ado连接sqlserver2008的简要步骤。 首先还是简要介绍一下吧(一下这段为网上摘抄) ADO接口简介   ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。   _ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如

GK_2014的专栏 1万+

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6480

代谢组数据分析(五):代谢组的功能富集分析

本文介绍了代谢组数据分析中的功能分析,包括代谢物富集分析、GSEA和ssGSEA方法。文章详细阐述了分析原理、应用背景、数据准备、统计方法以及结果解释,强调了在代谢通路和代谢物ID对应关系建立、差异代谢物筛选、富集程度计算等方面的关键步骤。通过这些方法,可以揭示差异代谢物在生物过程中的作用,为疾病研究和药物开发提供依据。

专注生信领域 5983

vs2017 + sqlserver(mfc操作sqlserver示例)

以前用的mysql多,最近有个项目需要在vs环境下使用SQL server,这里给大家分享一下sqlserver的安装过程及vs中mfc测试sqlserver数据的常规操作。 sqlserver2016安装包、SSMS工具可网盘下载。 地址: 一、安装SQL server 注意:如果之前安装失败过则一定要将sqlserver 卸载干净,所有SQL server相关的都卸载,可借助工具 Window...

weixin_44608669的博客 4998

C#上位机+YOLO实时目标检测:摄像头采集+多线程推理+精度调优全流程

标注数据集:使用LabelImg工具标注目标对象,按YOLO格式整理数据集;模型训练:使用Ultralytics库训练自定义模型,提升特定目标的检测精度;训练参数优化:增加训练轮数(epochs=100200)、调整批次大小(batch=1632)、使用数据增强(flip、mosaic等)。摄像头采集:封装通用采集类,支持USB摄像头/网口相机,实现稳定帧读取与异常处理;多线程推理:采用“采集线程+推理线程+UI线程”解耦架构,使用线程安全队列传递帧数据,彻底解决界面卡顿;核心封装。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 676

MFC 和 数据库Access 用 Ado类 操作

暑假短学期一直在做

u013240179的专栏 1518

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ado sql操作及防止注入

/*sql.Format(_T("delete from SELLINFO where Merchandise ='%s'"), m_name); m_pConnection-&gt;Execute((_bstr_t)sql, NULL, adCmdText); m_list.DeleteItem(pos);*/ //ÑéÖ¤sql×¢ÈëÎÊÌâ //_ConnectionP...

259

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MFC连接SqlServer数据库并显示数据到listCtrl控件教程

MFC连接SqlServer数据库并显示数据到listCtrl控件教程 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源文件提供了一套详细的教程,旨在帮助开发者学会如何在MFC(Microsoft Foundation Classes)应用程序中连接SqlServer数据库,并将查询到的数据显示到listCtrl控件上。教程内容深入浅出,即使是对MFC或数据库操作不熟...

gitblog_06778的博客 874

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MFC中用c++语言实现连接SQLServer2008(附添加操作)

一.安装好vs2015和SQL Server 2008 R2(各版本区别不大)所以以我现有软件为基础向大家展示一下。二. 先配置SQL Server 2008 R2- 在右下角“开始”菜单中点击“所有程序”找到“SQL Server 2008 R2”点击找到“配置工具”找到“SQL Server配置管理器” - 进入“SQL Server配置管理器”后找到“SQL Server服务”点击找到“S

梅毒公子的博客 1万+

在VS的MFC单文档工程中加入SQL数据库

https://blog.youkuaiyun.com/gmllyy/article/details/79703064 首先,在电脑上安装数据库;以SQL2008为例,安装完成后,打开界面如图所示,服务器名称为本机电脑名称,选择SQL Server身份验证,密码为电脑的开机密码;点击连接进入; 进入之后,在数据库这一选项里建立所需要的数据库,这里以Doctors为例; 这里设置了用户登陆界面密码,即在D...

active2489595970的博客 338

MFC连接SQL(ADO数据库访问技术)——绝对简单

MFC连接SQL(ADO数据库访问技术)——绝对简单       首先申明,现在我只是MFC,SQL的初学者,所以我讲的,一定很简单。(基本上不会MFC) 一.让我们看看ADO数据库访问技术使用的基本步骤及方法:      1.首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,

靖远CserRise的专栏 1088
下一篇: 关于MFC的Debug版和Release版解析
Big Joker
博客等级 码龄14年 92粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值