用C++访问SQL Server 2000

I小辣椒I

I小辣椒I

2016-02-19 12:34

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的用C++访问SQL Server 2000懂设计的网友们快点来了解吧!
一、ADO简介
  
  ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,不仅简单易用,并且不失灵活性.不失为C++利用数据库快速开发的不错选择。
  
  理论就不用我在这儿费话了,网上有很多,但光是理论,也不是不够的,ADO访问数据的方法很灵活,轻易让人混淆.网上大部分的实例都是基于MFC的,数据库也是Access多,这儿我写了一个C++语言访问MS SQL2000的实例,希望对比我还菜鸟的菜鸟有所帮助。
  
  二、建库
  
  首先在SQL2000企业治理中,建立一个数据库student,并创建一个表stu_info字段和值如下:
  
  
用C++访问SQL Server 2000
三、访问
  
  程序清单如下:(win2000+VC6.0)
  
  /*******************************************************************
  利用ADO访问MS SQL2000
  要求: 输出stu_info表内的每一条记录
  添加一条新记录
  删除名字为"本拉登"的记录
  */
  #import "c:Program FilesCommon FilesSystemADOmsado15.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!";
  // 创建记录集对象
  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 << "----------------------------------------------------------------";
  
  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 << "----------------------------------------------------------------";
  cout << "请输入你要添加的学生信息";
  cout << "学号:";
  cin >> student.snum;
  cout << "姓名:";
  cin >> student.sname;
  cout << "年龄:";
  cin >> student.sage;
  cout << "姓别:";
  cin >> student.ssex;
  cout << "专业:";
  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 << "ERROR:" << (char*)e.Description();//抛出异常
   }
   if(m_pConnection->State)
  m_pConnection->Close();
  
   ::CoUninitialize();
  
   return 0;
  }
展开更多 50%)
分享

猜你喜欢

用C++访问SQL Server 2000

编程语言 网络编程
用C++访问SQL Server 2000

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

编程语言 网络编程
用C++访问SQL Server 2000的实例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

通过HTTP访问SQL Server 2000数据库

SQLServer
通过HTTP访问SQL Server 2000数据库

Java连接SQL Server 2000

编程语言 网络编程
Java连接SQL Server 2000

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL server 2000存储过程

SQLServer
SQL server 2000存储过程

SQL SERVER与ACCESS,EXCEL的数据转换C++

编程语言 网络编程
SQL SERVER与ACCESS,EXCEL的数据转换C++

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览

HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览

Win10应用商店0x80072EFD/0x800706d9解决方法

Win10应用商店0x80072EFD/0x800706d9解决方法
下拉加载更多内容 ↓