windows 下的ADO 连接
来源:互联网 发布:ghost squad 知乎 编辑:程序博客网 时间:2024/05/16 04:33
// ADO.cpp: implementation of the CADO class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ADO.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BOOL CADO::OnInitADOConn( char * strConnect )
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
//读取配置文件
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
if( FAILED( m_pConnection->Open( _bstr_t(strConnect),"","",0 ) ) )//adModeUnknown
{
return FALSE;
}
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
return FALSE;
}
if(m_pConnection==NULL)
{
MessageBox(NULL,"发生错误:\n\n","系统提示",MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
return TRUE;
}
// 执行SQL语句,Insert Update _variant_t
BOOL CADO::ExecuteSQL(CString strSQL, char *err, char *strConet)
{
_bstr_t bstrSQL;
bstrSQL=strSQL;
// _variant_t RecordsAffected;
try
{
// 是否已经连接数据库
if(m_pConnection == NULL)
OnInitADOConn( strConet );
// 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)
{
strcpy(err, (char*)e.Description());
return false;
}
}
BOOL CADO::GetValue( CString strSQL, CString &strValue, _variant_t value, char *strConet )//获取字段值
{
if(m_pConnection==NULL)
{
if(!OnInitADOConn(strConet))
{
AfxMessageBox("数据库连接错误, 请检查数据库设置");
return FALSE;
}
}
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)strSQL,_variant_t((IDispatch*)m_pConnection),adOpenStatic,adLockOptimistic,adCmdText);
if( m_pRecordset )
{
while( !m_pRecordset->adoEOF )
{
strValue += (LPCTSTR)(_bstr_t)m_pRecordset->GetFields()->GetItem( "type" )->Value;
strValue.TrimRight();
strValue += "=";
strValue += (LPCTSTR)(_bstr_t)m_pRecordset->GetFields()->GetItem( value )->Value;
strValue += ";";
m_pRecordset->MoveNext();
}
return TRUE;
}
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
return FALSE;
}
return FALSE;
}
void CADO::ExitConnect()
{
// 关闭记录集和连接
try
{
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 释放环境
::CoUninitialize();
}catch(_com_error e)
{
return;
}
}
// ADO.h: interface for the CADO class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ADO_H__5195E5A1_FDD8_44EF_A495_36A209C4D9FF__INCLUDED_)
#define AFX_ADO_H__5195E5A1_FDD8_44EF_A495_36A209C4D9FF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CADO
{
public:
//添加一个指向Connection对象的指针
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针
_RecordsetPtr m_pRecordset;
public:
// 初始化—连接数据库
BOOL OnInitADOConn( char * strConnect );
BOOL GetValue( CString strSQL, CString &strValue, _variant_t value, char *strConet );
// 执行SQL语句,Insert Update _variant_t
BOOL ExecuteSQL(CString strSQL, char *err, char *strConet);
void ExitConnect();
};
#endif // !defined(AFX_ADO_H__5195E5A1_FDD8_44EF_A495_36A209C4D9FF__INCLUDED_)
- windows 下的ADO 连接
- VC下的ADO连接池
- ADO.NET下的各种连接字符串
- VC++下ADO连接ACCESS
- delphi下ado连接vfp数据表的常用方法
- ADO.NET的连接
- ADO的连接
- Oracle ADO的连接
- Windows下使用VS的ADO访问MySQL
- ADO连接数据库的方法
- ADO连接字符串的书写
- Ado.net的连接池
- ADO 连接access2010的问题
- ADO.net 的连接池
- ADO.NET的连接字符串
- Ado连接数据库的问题
- VC下利用ADO连接Access数据库
- VC下利用ADO连接Access数据库
- 多多吃红薯,好好学java--浅析类加载过程及类加载器(一)
- 搭建Eclipse PHP开发环境
- java初学者必看——J2SE小结
- Python进阶_7.Eclipse + PyDey
- java生涯起步。。。
- windows 下的ADO 连接
- 学完Java基础篇,自己写个二分查找算法
- 十六进制转SAC编码
- 修改CMD窗口 使其翻阅之前的内容
- delphi7读取ini配置连接oracle10G
- ireport 多行 自适应
- Activity 布局
- debug下情况良好、release下频繁奔溃问题的跟踪与解析
- 第五实验报告3