C++连接数据库二
2016-05-02 11:06
411 查看
#include "sqlServer.h"
#include <iostream>
#include<iomanip>
#include <string>
using namespace std;
/*
数据库连接步骤:
(1)初始化com组件 CoInitialize()
(2)实例化连接对象
(3)建立连接
(4)实例化数据集
(5)获取数据
*/
SqlConnection::SqlConnection()
{
// m_pConnection=NULL;
// m_pRecordset=NULL;
CoInitialize(NULL); //必须先初始化com组件
}
SqlConnection::~SqlConnection()
{
}
void SqlConnection::OnInitConn()
{
// HRESULT hr=m_pConnection.CreateInstance(__uuidof(Connection));
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection");
if(FAILED(hr))
{
cout<<"_ConnectionPtr对象指针实例化失败"<<endl;
return;
}
else
try
{
// _bstr_t strConnect="Driver={sql server};server=127.0.0.1,1433;uid=sa;pwd=013605;database=Stu;";
// m_pConnection->Open(strConnect,"","",adModeUnknown); //打开与数据库的连接
//创建connection对象
// m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_t strConnect="Provider=SQLOLEDB;Initial Catalog=Stu;Data Source=127.0.0.1";
//SERVER和UID,PWD的设置根据实际情况来设置
m_pConnection->Open(strConnect,"sa","013605",adModeUnknown);
}
catch (_com_error& e)
{
cout<<e.Description()<<endl;
}
}
_RecordsetPtr& SqlConnection::GetRecordSet(_bstr_t bstrSQL)
{
if(m_pConnection==NULL)
OnInitConn();
if(FAILED(m_pRecordset.CreateInstance( __uuidof( Recordset )))) //实例化数据集
{
cout<<"记录集对象指针实例化失败!"<<endl;
exit(0);
// return ;
}
try{
// m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
}catch(_com_error & e)
{
cout<<e.Description();
}
return m_pRecordset;
}
BOOL SqlConnection::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
//是否已连接数据库
if(m_pConnection==NULL)
OnInitConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error& e)
{
e.Description();
return false;
}
}
void SqlConnection::ExitConnect()
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
m_pRecordset->Release();
m_pConnection->Release();
//释放环境
::CoUninitialize();
}
#include <iostream>
#include<iomanip>
#include <string>
using namespace std;
/*
数据库连接步骤:
(1)初始化com组件 CoInitialize()
(2)实例化连接对象
(3)建立连接
(4)实例化数据集
(5)获取数据
*/
SqlConnection::SqlConnection()
{
// m_pConnection=NULL;
// m_pRecordset=NULL;
CoInitialize(NULL); //必须先初始化com组件
}
SqlConnection::~SqlConnection()
{
}
void SqlConnection::OnInitConn()
{
// HRESULT hr=m_pConnection.CreateInstance(__uuidof(Connection));
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection");
if(FAILED(hr))
{
cout<<"_ConnectionPtr对象指针实例化失败"<<endl;
return;
}
else
try
{
// _bstr_t strConnect="Driver={sql server};server=127.0.0.1,1433;uid=sa;pwd=013605;database=Stu;";
// m_pConnection->Open(strConnect,"","",adModeUnknown); //打开与数据库的连接
//创建connection对象
// m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_t strConnect="Provider=SQLOLEDB;Initial Catalog=Stu;Data Source=127.0.0.1";
//SERVER和UID,PWD的设置根据实际情况来设置
m_pConnection->Open(strConnect,"sa","013605",adModeUnknown);
}
catch (_com_error& e)
{
cout<<e.Description()<<endl;
}
}
_RecordsetPtr& SqlConnection::GetRecordSet(_bstr_t bstrSQL)
{
if(m_pConnection==NULL)
OnInitConn();
if(FAILED(m_pRecordset.CreateInstance( __uuidof( Recordset )))) //实例化数据集
{
cout<<"记录集对象指针实例化失败!"<<endl;
exit(0);
// return ;
}
try{
// m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
}catch(_com_error & e)
{
cout<<e.Description();
}
return m_pRecordset;
}
BOOL SqlConnection::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
//是否已连接数据库
if(m_pConnection==NULL)
OnInitConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error& e)
{
e.Description();
return false;
}
}
void SqlConnection::ExitConnect()
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
m_pRecordset->Release();
m_pConnection->Release();
//释放环境
::CoUninitialize();
}
相关文章推荐
- C++连接数据库一
- 2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换
- C/C++实现贪吃蛇逐步运动效果
- C语言图书管理系统
- C++标准库 std::bitset
- MOOC北京理工《C语言程序设计(上)》第4周第2题:确定母亲节
- C++ 基础知识复习 1
- 又到一年毕业季之C++面试题汇集
- 一些杂散但值得讨论的问题
- 如何快速精通C语言
- C++将矩阵存到.txt文件, 使用 FILE 或 ofstream
- MOOC北京理工《C语言程序设计(上)》第4周第1题:计算时钟的夹角
- C语言位字段实例
- 一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)
- C语言动态存储分配空间作为数组
- c/c++里的 堆区 栈区 静态区 文字常量区 程序代码区
- leetcode笔记:Reverse Vowels of a String
- 【C语言】动态链表和静态链表的创建
- 从txt文件中逐行读取字符串,并且用读取到的字符串在Mat型的图片上画矩形
- leetcode笔记:Reverse String