该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
源文件:
#pragma once
#ifndef __ADOConn_cpp__
#define __AODCOnn_cpp__
#include "ADOConn.h"
#include
using namespace std;
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
// 初始化—连接数据库
void ADOConn::createLine()
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQL Server Native Client 11.0; Server=127.0.0.1;Database=stock2; uid=zzh; pwd=liuyi7181314;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
cout << "数据库连接失败!";
cout << e.Description();
//printf("%s\n",e.ErrorMessage());
}
}
// 执行查询
_RecordsetPtr& ADOConn::GetRecordSet(char* SQL)
{
_bstr_t bstrSQL(SQL);
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
createLine();
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
printf("查询失败:");
cout << e.Description();
cout << ":" << SQL <
}
// 返回记录集
return m_pRecordset;
}
// 执行SQL语句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(char* SQL)
{
_bstr_t bstrSQL(SQL);
// _variant_t RecordsAffected;
try
{
// 是否已经连接数据库
if(m_pConnection == NULL)
createLine();
// Connection对象的Execute方法:(_bstr_t CommandText,
// VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 参数RecordsAffected是操作完成后所影响的行数,
// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存储过程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
printf("执行失败:");
cout << e.Description();
cout << ":" << SQL <
return false;
}
}
void ADOConn::Close()
{
// 关闭记录集和连接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 释放环境
::CoUninitialize();
}
//格式转换
char* ADOConn::VariantToChar(_variant_t& var)
{
char strValue[200];
_bstr_t bst_t;
switch(var.vt)
{
case VT_EMPTY:
strcpy_s(strValue,"\0");
break;
case 3:
case VT_INT:
sprintf_s(strValue,"%d",var.intVal);
break;
case VT_R4:
sprintf_s(strValue,"%f",var.fltVal);
break;
case VT_R8:
sprintf_s(strValue,"%lf",var.dblVal);
case VT_BSTR:
bst_t = var;
sprintf_s(strValue,"%s",(const char* )bst_t);
break;
case VT_BOOL:
sprintf_s(strValue,"%d",var.boolVal);
break;
default:
strcpy_s(strValue,"\0");
break;
}
return strValue;
}
#endif