vc sqlserver编程的一个处理类

这是头文件
#pragma once

#include "stdafx.h"

class SQLDB
{
public:
    SQLDB(void);
    ~SQLDB(void);
    
public:
  _ConnectionPtr m_con;
  _RecordsetPtr m_record;

public:
    void InitConnection();  
    _RecordsetPtr& GetRecordSet(_bstr_t sql);
    BOOL ExecuteSql(_bstr_t sql);
    void ExitConnection();
};

这是cpp文件
#include "StdAfx.h"
#include "SQLDB.h"

SQLDB::SQLDB(void)
{
}

SQLDB::~SQLDB(void)
{
}

void SQLDB::InitConnection()
{
    
    try
    {
        //´创建connection连接对象
       m_con.CreateInstance("ADODB.Connection");      
       //设置连接字符串
       _bstr_t strConnect= "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=test1;Data Source=NETCOM-ZJY\\SQL2005";
       //AfxMessageBox(strConnect,0,0);
       //SERVER和UID,PWD的设定需要根据自己的情况
       m_con->Open(strConnect,"sa","111111",adModeUnknown);
       //AfxMessageBox(L"connection ok");
    }
    //捕捉异常
    catch(_com_error e)
    {
        //显示错误信息
        AfxMessageBox(e.Description());
    }
}

_RecordsetPtr& SQLDB::GetRecordSet(_bstr_t sql)
{
    if(m_con == NULL)
    {
        InitConnection();
    }
   
    try
    {
    m_record.CreateInstance(__uuidof(Recordset));
    m_record->Open(sql,m_con.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    }
    catch(_com_error e)
    {
        e.Description();
    }
    return m_record;
   
}

BOOL SQLDB::ExecuteSql(_bstr_t sql)
{
    _variant_t affect;
   
    if(m_con == NULL)
    {
        SQLDB::InitConnection();
    }
   
    try
    {
        m_con->Execute(sql,NULL,adCmdText);
        return TRUE;
    }
    catch(_com_error e)
    {
        return FALSE;
    }
   
}

void SQLDB::ExitConnection()
{
    if(m_record != NULL)
    {
        m_record->Close();
    }
   
    m_con->Close();
}

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

posted @ 2009-09-01 00:05  音乐啤酒  阅读(377)  评论(0编辑  收藏  举报