zoukankan      html  css  js  c++  java
  • 纯C++ 连接SQL Server2005 数据库读写操作的小例子

    一个测试c++链接 sql server 数据库的例子
    // 数据库说明
    // 数据库用户为 sa , 密码为 空
    // 数据库为 MyDB
    // 表为 UserInfo
    // 表字段为 Name 、 PassWd 、ID

    // TestSQL.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <iostream>
    #include <iomanip>
    #import "c:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF", "EndOfFile")
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    // 初始化COM接口
    CoInitialize(NULL);

    // _RecordsetPtr智能指针,可以用来打开库内数据表,并可以对表内的记录、字段等进行各种操作
    _RecordsetPtr m_pRecordset("ADODB.Recordset");//定义记录集对象

    // _ConnectionPtr智能指针,通常用于打开、关闭一个库连接或用它的Execute方法来执行一个不返回结果的命令语句
    _ConnectionPtr m_pConnection("ADODB.Connection");//定义数据库连接对象

    try
    {
    // 创建Connection对象
    m_pConnection.CreateInstance("ADODB.Connection");

    // 设置连接字符串,若数据库在网络上则Server为形如(192.168.253.253,3340)
    _bstr_t strConnect = "Provider=SQLOLEDB; Server=Localhost; Database=MyDB; uid=sa; pwd=;";

    // 建立与服务器连接
    m_pConnection->Open(strConnect,"","",adModeUnknown);
    if (m_pConnection ==NULL)
    {
    cerr<<"Lind data ERROR! ";
    }

    m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集对象

    //取得表中的记录
    _bstr_t bstrSQL("select *from UserInfo");//查询语句
    m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

    _variant_t vsnum, vsName,vsPassWd, vsID,vsmajor;//对应库中的snum,sname,sage,ssex,smajor

    cout<<"姓名 密码 ID ";
    cout<<"------------------------------------------- ";

    while (!m_pRecordset->EndOfFile)
    {
    vsName= m_pRecordset->GetCollect("Name");
    vsPassWd= m_pRecordset->GetCollect("PassWd");
    vsID= m_pRecordset->GetCollect("ID");

    if (vsnum.vt !=VT_NULL && vsName.vt !=VT_NULL&& vsPassWd.vt!=VT_NULL && vsID.vt != VT_NULL&& vsmajor.vt!=VT_NULL)
    {
    cout.setf(ios::left);
    cout<<setw(14) <<(char*)(_bstr_t)vsName;
    cout<<setw(14) <<(char*)(_bstr_t)vsPassWd;
    cout<<setw(14) <<(char*)(_bstr_t)vsID;
    cout.unsetf(ios::left);
    cout<<endl;
    }

    //移动下一条记录
    m_pRecordset->MoveNext();
    }

    cout<<" ------------------------------------------ ";

    //用Execute执行sql语句来创建表
    m_pConnection->Execute("CREATE TABLE Employee(EmID INTEGER,EmName TEXT,EmAge INTEGER,EmBirthday DATETIME)", NULL, adCmdText);

    m_pRecordset->Close();//关闭记录集
    }
    catch (_com_error e)
    {
    e.Description();//抛出异常
    }

    if (m_pConnection->State)
    {
    m_pConnection->Close();
    }

    ::CoUninitialize();
    return 0;
    }

    |=======================================| | 既然选择了远方,便只顾风雨兼程! | |=======================================|
  • 相关阅读:
    [Tip: VS debugging]F5 VS Ctrl +F5
    C#: boxing and unboxing
    [Tip: check overflow/underflow C#]
    C# floating Point types
    UVa 103 Stacking Box(记忆化搜索)
    POJ 3321 apple tree(树形数组)
    UVa 116 Unidirectional TSP(简单旅行商DP)
    UVa 562 Dividing coins(简单DP)
    UVa 10003 Cutting Sticks(区间DP)
    UVa 348 Optimal Array Multiplication Sequence(链式DP/区间DP)
  • 原文地址:https://www.cnblogs.com/mr-m/p/3542988.html
Copyright © 2011-2022 走看看