用C++访问SQL Server 2000的实例

C++通过ODBC方式连接数据库SQLServer及增删查改操作【图书借阅系统为例】 C++通过ODBC方式连接数据库SQLServer及增删查改操作【图书借阅系统为例】 文章目录 前言 一、ODBC如何配置 二、SQL Server如何设置账号密码 三、C++连接数据库以及增删查改操作的代码实现 四、源代码 前言 ​ 大二学习了《数据库原理及应用》,期末做课程设计。因为大一学的C++,所以决定用C++写。这里以《图书借阅系统》为例,该系统做的并不是很完整,但已经能够体现C++如何对数据库SQL Server进行增删查改操作。以下是本人的学习心得,仅供学习参考。 一、ODBC如 阅读详情
  一、ADO简介

  ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,不仅简单易用,并且不失灵活性.不失为C++利用数据库快速开发的不错选择。

  理论就不用我在这儿费话了,网上有很多,但光是理论,也不是不够的,ADO访问数据的方法很灵活,容易让人混淆.网上大部分的实例都是基于MFC的,数据库也是ACCESS多,这儿我写了一个C++语言访问MS SQL2000的实例,希望对比我还菜鸟的菜鸟有所帮助。

  二、建库

  首先在SQL2000企业管理中,建立一个数据库student,并创建一个表stu_info字段和值如下:

snum snamesagessexsmajor
200113801本拉登23 男 计算机科学
200104205张巧巧25 女旅游管理
200113802张学友 26 男 计算机科学

  三、访问

  程序清单如下:(win2000+VC6.0)

/*******************************************************************
利用ADO访问MS SQL2000
要求: 【1】输出stu_info表内的每一条记录
【2】添加一条新记录
【3】删除名字为"本拉登"的记录
*/
#import "c:/Program Files/Common Files/System/ADO/msado15.dll" /
no_namespace rename("EOF", "EndOfFile")
#include <iostream>
#include <iomanip> //for setw()
using namespace std;
class STU
{
 public:
  char snum[10]; //学号
  char sname[10]; //姓名
  char ssex[2]; //姓别
  long sage; //年龄
  char smajor[20]; //专业
 public:
  STU(){}
  ~STU(){}
};

int main()
{
 STU student;
 ::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备

 _RecordsetPtr m_pRecordset("ADODB.Recordset");
 _ConnectionPtr m_pConnection("ADODB.Connection");

 _bstr_t bstrSQL("select * from stu_info"); //查询语句
 char * query_cmd = "DELETE FROM stu_info WHERE sname = '本拉登'";

 try
 {
  // 创建Connection对象
  m_pConnection.CreateInstance("ADODB.Connection");
  // 设置连接字符串,必须是BSTR型或者_bstr_t类型
  _bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=student; uid=sa; pwd=123;";
  //若数据库在网络上则Server为形如(192.168.1.5,3340)
  //用户sa和密码123只是针对我的库
  m_pConnection->Open(strConnect,"","",adModeUnknown);
  if(m_pConnection==NULL)
   cerr<<"Lind data ERROR!/n";
  // 创建记录集对象
  m_pRecordset.CreateInstance(__uuidof(Recordset));
  // 取得表中的记录
  m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
  adOpenDynamic,adLockOptimistic,adCmdText);

  _variant_t vsnum,vsname,vsage,vssex,vsmajor; //对应库中的snum,sname,sage,ssex,smajor
  cout << "学号 姓名 年龄 姓别 专业";
  cout << "/n----------------------------------------------------------------/n";

  while (!m_pRecordset->EndOfFile)
  {
   vsnum = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
   vsname = m_pRecordset->GetCollect("sname");
   vsage = m_pRecordset->GetCollect("sage");
   vssex = m_pRecordset->GetCollect("ssex");
   vsmajor = m_pRecordset->GetCollect("smajor");
   if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL && vsage.vt != VT_NULL
&& vssex.vt != VT_NULL && vsmajor.vt != VT_NULL)
   {
    cout.setf(ios::left);
    cout << setw(14) << (char*)(_bstr_t)vsnum;
    cout << setw(14) << (char*)(_bstr_t)vsname;
    cout << setw(8) << vsage.lVal;
    cout << setw(8) << (char*)(_bstr_t)vssex;
    cout <<setw(20) << (char*)(_bstr_t)vsmajor;
    cout.unsetf(ios::left);
    cout << endl;
   }
   m_pRecordset->MoveNext(); ///移到下一条记录
  }
  cout << "/n----------------------------------------------------------------/n";
  cout << "/n请输入你要添加的学生信息/n";
  cout << "学号:";
  cin >> student.snum;
  cout << "/n姓名:";
  cin >> student.sname;
  cout << "/n年龄:";
  cin >> student.sage;
  cout << "/n姓别:";
  cin >> student.ssex;
  cout << "/n专业:";
  cin >> student.smajor;
  m_pRecordset->MoveFirst(); //移动到第一条记录
  m_pRecordset->AddNew(); ///添加新记录
  m_pRecordset->PutCollect("snum",_variant_t(student.snum));
  m_pRecordset->PutCollect("sname",_variant_t(student.sname));
  m_pRecordset->PutCollect("sage",_variant_t(student.sage));
  m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
  m_pRecordset->PutCollect("smajor",_variant_t(student.smajor));
  m_pRecordset->Update();

  m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除
  m_pRecordset->Close(); // 关闭记录集
 }

 // 捕捉异常
 catch(_com_error e)
 { 
  // 显示错误信息
  cerr << "/nERROR:" << (char*)e.Description();//抛出异常
 }
 if(m_pConnection->State)
  m_pConnection->Close();

 ::CoUninitialize();

 return 0;
}
VC++6.0开发的教学仪器全周期管理工具(支持Access/SQL Server 2000&2005) 面向高校和职业院校实训室设备管理员的轻量级管理工具,用VC++6.0编写,覆盖教学仪器从登记、入库、出库、归还、报废到库存预警和统计报表的完整业务流程。内置三套数据库适配方案:本地Access版适合单机快速部署;SQL Server 2000和2005版支持中小型局域网环境,可对接现有校园数据库平台。程序模块划分清晰,主界面为InstrumentManageDlg,设备操作逻辑封装在DlgDev系列类中,出入库与归还分别由DlgDevIn/DlgDevOut/DlgViewRet等独立对话框实现,报表生成通 阅读详情

相关推荐

C++ + ADO + Sql2012 简单例子(适合菜鸟)

关于vc6.0/VS中实现ADO SQL数据库连接的文章网上虽然很多,但大多写的很繁琐,对于我们这样的菜鸟来说,还是很希望有一篇简单化的文章的。希望跟我一样的菜鸟们学得开心!

c++ 连sqlserver

/要在 C++ 中连接 SQL Server 数据库,可以使用 Microsoft 提供的 SQL Server Native Client 或者 //ODBC 驱动程序。//上述代码中,使用 SQLDriverConnectA 函数连接数据库,其中 szConnStr 参数指定连接字符串,//需要注意的是,使用 SQL Server Native Client 连接数据库需要先初始化 COM 库,//最后,使用 SQLDisconnect 函数断开连接,使用 SQLFreeHandle 函数释放资源。

weixin_39926429的博客 4583

WPF基础系列六:MVVM框架

MVVM框架 文章目录MVVM框架前言一、MVVM框架简介1. 什么是MVVM?2. MVVM的优势3.MVVM的应用场景二、MVVM使用及示例 前言 在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。 与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过

iceberg7012的博客 2万+

C++数据库编程 ODBC连接SQL Server数据库

文章目录1. ODBC编程一般步骤2. 连接步骤3. 代码示例 1. ODBC编程一般步骤 配置数据源 初始化环境 拼接SQL语句 执行SQL语句遍历结果集 释放ODBC连接 官方文档:Microsoft 开放式数据库连接 (ODBC) - SQL Server | Microsoft Docs 2. 连接步骤 头文件 需要包含以下头文件 #include<Windows.h> #include <sql.h> #include <sqlext.h> #inc

超级大洋葱的博客 9228

UE4项目迁移指南:如何无缝导入外部.uasset文件并保持材质关联

本文详细解析了将外部.uasset文件无缝导入UE4项目的专业方法。针对手动复制文件时常见的材质关联丢失问题,提供了使用引用查看器进行诊断和修复的实用技巧,并推荐使用引擎内置的“迁移”功能确保资源依赖关系的完整性,帮助开发者高效整合项目资源。

t8u9v0的博客 1046

【深度剖析】三一重工的数字化转型(中篇)

三一重工在数字化转型方面取得了提高效率、降低成本、加强研发创新和改善内控管理等多方面的成效。本研究旨在通过对三一重工数字化转型的深入分析,引导企业思考在第四次工业革命与第三次能源革命交汇的超级技术窗口期,如何进一步把握发展机遇,并为同行业其他企业提供探索性的建议。作为装备制造行业的佼佼者,三一重工的数字化转型受到了业界的广泛关注。作为行业内首批接触并实践数字化转型的企业之一,三一重工的转型经验不仅成功,而且积累了丰富的理论与实践,为其他制造业企业的数字化转型提供了可借鉴的范例。

领信卓越的博客 2306

C++连接SQL数据库

C++连接SQL数据库第一步 系统配置 1.设置SQLSERVER服务器为SQL登录方式,并且系统安全性中的sa用户要设置登录功能为“启用”,还有必须要有密码。 2.需要在ODBC中进行数据源配置,数据源选\”SQL SERVER”,登录方式使用“使用输入用户登录ID和密码的

lins1393997412的专栏 1万+

华为OD机试真题 新系统 2026-04-22 Java&Go 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 261

C++访问SQL Server 2000

<br />一、ADO简介<br /><br />   ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,不仅简单易用,并且不失灵活性.不失为C++利用数据库快速开发的不错选择。<br /><br />    理论就不用我在这儿费话了,网上有很多,但光是理论,也不是不够的,ADO访问数据的方法很灵活,容易让人混淆.网上大部分的实例都是基于MFC的,数 据库也是ACCESS多,这儿我写了一个C++语言访问MS 

shigaopb的专栏 488

YOLO26原创优化:SPPF优化 | 新一代高效可形变卷积DCNv4如何做二次创新?高效结合SPPF

如何跟YOLO26结合:1) SPPF高效结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 357

【数字孪生与仿真技术】14:数据驱动+机理模型:工业级混合建模实战(附MATLAB完整代码+案例解析)

摘要 本文针对工业建模中机理模型精度不足和数据驱动模型缺乏物理约束的痛点,提出混合建模技术作为解决方案。文章系统阐述了混合建模的3种主流架构(参数校正型、残差补偿型、组件替换型),结合清华大学催化裂化装置的实际案例,分析混合建模的工业应用价值。同时以连续搅拌反应釜(CSTR)为例,提供MATLAB环境下残差补偿型混合模型的完整实现代码,详细展示从机理模型构建到数据驱动补偿的全流程,并给出工程实践中的应对策略,为工业建模提供可落地的技术方案。 关键词 混合建模、机理模型、数据驱动、工业建模、MATLAB

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 622

visual C++使用ADO访问sql server 2000

ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。

linshengchao123的专栏 801

JSON 与 JSON-RPC 的区别

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于文本,采用人类可读的语法来表示结构化数据。它起源于JavaScript,但如今已被几乎所有主流编程语言支持。标准文档:RFC 4627数据类型:支持 String、Number、Boolean、Null、Object、Array 六种基本类型格式示例"name": "张三","age": 30,JSON-RPC(JSON Remote Procedure Call)是一种远程过程调用(RPC)协议。

h a 6 6 6 c k 为 你解决复杂难题! 145

vc6.0 c 语言如何嵌入sql语句,实验五通过嵌入式SQL(主语言为C)访问数据库.doc

嵌入式SQL实验报告实验目的:熟悉通过嵌入式SQL(主语言为C/C++)访问数据库。实验平台:数据库管理系统:SQL Server 2000相应数据库的预编译器:nsqlprep.exeC\C++编译器Microsoft Visual C++ 6.0Window 7系统PC实验内容和要求:熟悉数据库的预编译器。编写一个嵌入式SQL程序实现对数据库中数据的插入/修改/查询(多记录)。完成实验报告。操...

weixin_29767917的博客 839

Apache Jena SPARQL 查询完全指南:入门与实战案例

本文介绍了使用Apache Jena执行SPARQL查询的完整指南。SPARQL是用于RDF数据的标准查询语言,在知识图谱领域地位相当于SQL。教程从基础开始,涵盖创建模型、加载数据以及执行各种查询类型。特别强调了WHERE子句中的图模式匹配机制,通过Mermaid图直观展示数据图与查询图的匹配过程。文章还对比了变量命名规范(?和$前缀),解释了SPARQL引擎如何通过变量绑定实现数据检索。通过Hello World示例演示了完整查询流程,为开发者提供了SPARQL的实用入门指导。

Lincoln 的专栏 1373

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: [转贴]oracle存储过程返回记录集
下一篇: ORACLE优化系列文章一 ──Oracle中优化SQL的原则
zonelive
博客等级 码龄23年 4粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值