VC动态链接数据库类ADOConn

//环境Windows XP SP3+VS2010 UNICODE
//头文件ADOConn.h
#pragma once

#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace  \
rename("EOF","adoEOF") rename("BOF","adoBOF")

class ADOConn
{
public:
ADOConn(void);
~ADOConn(void);
void OnInitADOConn();
void ExitConnect();
_RecordsetPtr& GetRecordset(_bstr_t bstrSQL);
BOOL ExecuteSQL(_bstr_t bstrSQl);

//
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
};

//实现文件ADOConn.cpp
#include "StdAfx.h"
#include "ADOConn.h"

ADOConn::ADOConn(void)
{
}

ADOConn::~ADOConn(void)
{
}

void ADOConn::OnInitADOConn()
{
//初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型

TCHAR szFilePath[MAX_PATH + 1];
GetModuleFileName(NULL, szFilePath, MAX_PATH);
(_tcsrchr(szFilePath, _T('\\')))[1] = 0;             //删除文件名,只获得路径。
CString dbpath= szFilePath;
TRACE1("dbpath = %s\n",dbpath);

//Access 2003
//_bstr_t strConnect="uid=;pwd=;DRIVER={Microsoft Access Driver(*.mdb)};DBQ=nkj.mdb;";    //Access 2003标准链接  
//_bstr_t strConnect  = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\App1\你的数据库名.mdb; Exclusive=1; Uid=你的用户名; Pwd=你的密码;"  //独占方式连接
_bstr_t strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + dbpath  + _T("data\\nkj.mdb;User ID=admin;Password=;");   //普通方式无密码  
//_bstr_t strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + dbpath + _T("data\\nkj.mdb;Jet OLEDB:Database Password=你的密码;");   
//普通方式,有密码 

//Access 2007
//_bstr_t strConnect =Provider="Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False; " ;   //标准安全链接
//_bstr_t strConnect =Provider="Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Jet OLEDB:Database Password=MyDbPassword;";    //包括数据库密码

//SQL Server
//_bstr_t strConnect = "Provider=SQLOLEDB; Server=127.0.0.1;Database=Mis; uid=sa; pwd=sa;";

m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
}
}

void ADOConn::ExitConnect()
{

if (m_pRecordset!=NULL)
{
m_pRecordset->Close();
}
m_pConnection->Close();

::CoUninitialize();
}

_RecordsetPtr& ADOConn::GetRecordset(_bstr_t bstrSQL)
{
try
{
if (m_pConnection == NULL)
{
OnInitADOConn();
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return m_pRecordset;

}

执行SQL语句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
_variant_t RecordAffected;
try
{
if (m_pConnection == NULL)
{
OnInitADOConn();
}
m_pConnection->Execute(bstrSQL,NULL,adCmdText /*文本命令*/);
return TRUE;
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
return FALSE;
}

}

//简单用法,记得在XXX.CPP添加  #include "ADOConn.h"

BOOL CXXX::OnInitDialog()
{


  //其他代码
m_listUser.SetExtendedStyle
(m_listUser.GetExtendedStyle()|LVS_EX_HEADERDRAGDROP|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES | LVS_EX_ONECLICKACTIVATE);
m_listUser.InsertColumn(0, _T("#"), LVCFMT_LEFT,20);
m_listUser.InsertColumn(1, _T("用户"), LVCFMT_LEFT, 60);
m_listUser.InsertColumn(2, _T("性别"), LVCFMT_LEFT, 60);
m_listUser.InsertColumn(3, _T("职务"), LVCFMT_LEFT, 60);
m_listUser.InsertColumn(4, _T("用户类型"), LVCFMT_LEFT, 80);
ADOConn  m_AdoConn;
//open database
m_AdoConn.OnInitADOConn();
CString  sql;
sql.Format(_T("select* from tbUser order by No desc"));
_RecordsetPtr   m_pRecordset;
m_pRecordset = m_AdoConn.GetRecordset((_bstr_t)sql);
//遍历记录集
while(m_AdoConn.m_pRecordset->adoEOF  == 0)
{
m_listUser.InsertItem(0,_T(""));
m_listUser.SetItemText(0,0,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("No"));
m_listUser.SetItemText(0,1,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("user"));
m_listUser.SetItemText(0,2,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("sex"));
m_listUser.SetItemText(0,3,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("position"));
m_listUser.SetItemText(0,4,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("permissions"));
m_pRecordset->MoveNext();
}
m_AdoConn.ExitConnect();

  //其他代码

return TRUE;  // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密云一日的无色影像

密云一个村的街口。 养蜂人家门前的小狗。 两个游荡街头的小男生。

一只紧握笔的手:地震中的感人图片之二

新华社发(刘忠俊 摄) 在一座学校的废墟中伸出来一只手。这是一只孩子的手。这只手的指甲已经变黑,手上皮肤也开始腐烂。这是一只已经失去生命的手,但是却紧紧地握住一支笔。在地震发生的那一瞬间,也许他正在课堂上认真…

tftp服务器连接开发板下载内核提示:retry count exceeded; starting again

今天,进Ubuntu连开发板调试程序,不能够连接开发板下载内核了,各种重启也没用,最后百度发现此帖子,一语惊醒梦中人,原来我在windows中把无线网卡禁用了,进入win打开无线功能,再进Ubun…

function函数的使用

function函数的使用 规则: 函数必须至少含有一个输入变量,不能有任何输出或输入/输出双向变量。函数不能包含时钟控制语句(如延迟#、事件控制或者等待wait)。函数是通过对函数名赋值的途径返回其值的,就好比是一个寄存器。函数不…

MFC的固高环形倒立摆GRIP2002实验平台

固高环形倒立摆GRIP2002是基于GT-400-SV-PCI运动控制卡的一个二级环形倒立摆(摆杆和连杆两根杆的摆),固高公司提供了一个DOS环境下的Demo和MATLAB 7.0的simulink的Demo,但DOS版本貌似不能用,下面是在VS2008SP1平台下用…

《长调》 :寻找我们共同失去的天堂

《长调》(大众文艺出版社2008年1月出版)的作者千夫长是蒙古人。他出生于古老的科尔沁草原,如今却生活在中国最现代化的商业前沿——深圳。他的小说更是与现代化这个词格格不入,他的小说地理是远隔几千里之外的故土草原&#xff0c…

说两句电视剧《东归英雄》

这几天熬夜看欧锦赛,过瘾,毕竟四年一次嘛。恰好电视剧《东归英雄》也开始在中央8套播出,我断断续续看了几集,先不多论拍的好坏,贴几张剧照欣赏一下。 导演是麦丽斯。以前看过她和她丈夫塞夫共同执导的电影《东归英雄传…

begin:块名

begin:块名 在VerilgHDL语言中,可以给每个块取一个名字,只需将名字加在关键词begin或fork后面即 可。这样做的原因有以下几点。 这样可以在块内定义局部变量,即只在块内使用的变量。这样可以允许块被其它语句调用,如被disable语…

stl

#include <iostream> #include <vector> //常见6种STL容器 deque list queue priority_queue stack vector #include <algorithm> //通用算法 #include <fstream> //文件 #include <string> using namespace std; int main() { cout&l…

“所有一切”和“介于之间”:欧美“新媒体”艺术

6月15日&#xff0c;在北京798艺术区的映艺术中心看了欧美8位艺术家的展览。这些作品被称为“新媒体艺术”&#xff0c;主题为All&#xff08;所有一切&#xff09;和Between&#xff08;介于之间&#xff09;。这些艺术家来自美国、英国、西班牙、德国和瑞士。策展人是Alison …

Ubuntu下无法安装sun-java6-jdk的解决办法

安装sun-java6-jdk出现以下错误 rootstu-system:/home# sudo apt-get install sun-java6-jdk Reading package lists... Done Building dependency tree Reading state information... Done Package sun-java6-jdk is not available, but is referred to by another package. T…

过年回家,走之前留一个用GDI+实现的略缩图控件

这是一个加载文件夹图片略缩图的控件&#xff0c;支持多种图片格式~~用法也比较简单&#xff08;1&#xff09;、源代码//头文件ListImageCtrl.h #pragma once #include <vector>//note:need GDI// ListImageCtrl.h : header fileclass CListImageCtrl : public CListCt…

如何避免偶然的锁存器和%0h

如何避免偶然的锁存器和%0h 如果用到if语句&#xff0c;最好写上else项。如果用case语句&#xff0c;最好写上default项。遵循上面两条原则&#xff0c; 就可以避免发生这种错误&#xff0c;使设计者更加明确设计目标&#xff0c;同时也增强了Verilog程序的可读性可以通过在%和…

记住北京历史上的灾难

读《北京灾害史》&#xff0c;不免令人心惊肉跳。原来古老的北京曾经遭遇过那么多的灾难和浩劫。洪涝、干旱、蝗灾、瘟疫和地震&#xff0c;几乎所有的自然灾害都光顾过北京&#xff0c;尤其是地震。记得1976年唐山大地震过后&#xff0c;民间曾流传一种说法&#xff0c;说北京…

我喜欢荷兰队,可是今天我爱上了俄罗斯

希丁克 我一直喜欢荷兰队&#xff0c;可是今天早晨我爱上了俄罗斯。我喜欢上了那个像高中生一样羞涩的阿尔沙文、笑面绅士狙击手帕甫柳琴科、长相酷似年轻时屠格涅夫的边锋托尔宾斯基、22岁的天才门将阿金费耶夫以及他们的主帅、足球国际主义者、荷兰人希丁克。刘建宏说荷兰是被…

图片浏览控件。。

代码暂时不上传。看看图片得了、 图片可以进行各种操作

Ubuntu15.04如何添加163源

具体的源地址如何获取参见以下网站&#xff1a; http://wiki.ubuntu.org.cn/源列表#Vivid.2815.04.29.E7.89.88.E6.9C.AC sudo gedit /etc/apt/sources.list 将下列源复制粘贴至最前面&#xff0c;然后保存退出 deb http://mirrors.163.com/ubuntu/ vivid main restricted univ…

使用MATLAB和Vivado读取txt文件

使用MATLAB和Vivado读取txt文件 MATLAB处理十六进制的数据: 将你的16进制数据保存到txt文件中,打开MATLAB选择workspace->importdata,导入txt文件中的数据,这样会得到cell格式数据(假设名字为textdata),调用函数hex2dec即可,a=hex2dec(textdata),a就是你所想要的数…

意大利终于付出了代价

今天凌晨在西班牙与意大利的4分之一淘汰赛中,意大利这个老爷车终于掉链子了。这场比赛可说是进攻战胜了保守&#xff0c;诚实消灭了狡猾。从他们排出的不思进取的阵型&#xff0c;到迪纳塔莱佯装受伤受到全场嘘声开始&#xff0c;意大利就注定了要输掉他们一直以来的运气。 看着…

电影《蒙古王》剧照

电影《蒙古王》&#xff0c;由德国、俄罗斯和哈萨克斯坦合拍&#xff0c;影片讲述了成吉思汗早年的故事&#xff0c;拍摄期间曾在蒙古、哈萨克斯坦和中国境内的新疆地区取景。影片的导演是俄罗斯人谢尔盖波德罗夫&#xff0c;演员则来自12个国家&#xff0c;中国演员孙红雷出演…