您的位置:首页 > 运维架构 > Linux

centos下做Lvs负载均衡

2012-08-11 15:43 218 查看
原文地址:VC中如何使用ADO(转载)作者:飞鸟

1。首先,我们必须建立一个VC的工程。建立VC工程很简单,只要如下操作即可。

1. 运行VC,菜单->File->New->Projects,然后选择MFC AppWizard(exe),然后填好工程名称,点击OK。

2. 选择应用程序类型为Dialog based。

3. 点击Finish,完成。

2。导入ADO。在VC环境下,一般来说,我们都是用的ADO来连接数据库的。

在StdAfx.h(这是一个VC的全局头文件,默认每个CPP文件都要引用它),添加如下代码:

#import "c:program filescommon filessystemadomsado15.dll" no_namespace

rename ("EOF", "adoEOF")

rename ("BOF", "adoBOF")

请确认在你的系统中存在msado15.dll这个DLL,它的位置应该与上面的路径一直,它是ADO的库文件。

如果编译不过,而且提示是一些如error C2011: 'LockTypeEnum' : 'enum' type redefinition的重定义,那么请删除以下的代码:

#ifndef _AFX_NO_DAO_SUPPORT

#include <afxdao.h> // MFC DAO database classes

#endif // _AFX_NO_DAO_SUPPORT

3。初始化ADO。

::CoInitialize(NULL); // 初始化COM,ADO是一个COM组件。

_ConnectionPtr opConn; // 连接

opConn.CreateInstance(__uuidof(Connection)); // 初始化一个连接

CString strConnect; // 格式化连接

strConnect.Format("Provider=MSDASQL.1;Driver={%s};Server=%s;DataBase=%s;UID=%s;PWD=%s;",

strDriver,

strServerPath,

strDb,

strUid,

strPwd);

opConn->Open(_bstr_t(lpczConn), "", "", adConnectUnspecified); // 打开连接
// 干活,现在可以使用ADO中的其他对象了,比如_RecordsetPtr等

_RecordsetPtr opSet;

CString strSQL;

// tb_idealsoft

// +---------------+---------------+

// | Numb(int) | Name(varchar) |

// +---------------+---------------+

strSQL.Format("SELECT * FROM tb_idealsoft");

_variant_t vtConn = _variant_t(opConn, true);

opSet->PutCursorLocation(adUseClient); // 设定游标

opSet->Open(_variant_t((LPCTSTR)strSQL), vtConn, adOpenStatic, adLockOptimistic, adCmdText); // 执行SQL语句,打开记录集

long lCount = opSet->GetRecordCount(); // 表中记录的数目

opSet->MoveFirst(); // 到记录集的第一行

for(int i = 0; i < lCount; i++)

{

_variant_t vt = _m_opSet->GetCollect(_variant_t(_T("Name")));

// 由于Name这个域是字符串,所以需要将vt转化成字符串

// 在此,我们有必要解释一下_variant_t这个怪物,它的确是个怪物。微软,就是一个恐龙园,

// 经常会放出一些莫名其妙的数据结构。

// 其实_variant_t与其说是一个class,还不如说它是一个union,其实在它的基类tagVARIANT中,的确

// 存储了一个union,用来存放数据,而_variant_t其实就是对这个union的进一步封装。

// 之前,微软似乎试图用它来统一所有变量的存储与访问,但始终不很成功,主要是这个东西实在是

// 太抽象了,但是ADO的成功推广却意外的使这个畜生逐渐成名。当然,主要还是令人厌恶。

// 在_variant_t中有一个变量叫做vt,它是用来记录变量类型的,根据变量的类型,我们可以把_variant_t

// 转化成不同的数据类型。

// _variant_t v;

// 比如当前vt = VT_I1(说明此时_variant_t代表了一个char型数据,具体的定义可以参看oaidl.h),我们可以

// 这样来转换:char ch = v.cVal;

// 如果当前的vt = VT_LPSTR,表明当前的_variant_t代表了一个char*型数据。

// 从而我们可以这样转换:char* psz = v.pcVal;

// ……

// 好了,现在可以将这个vt转换为char*然后将它保存起来了

// ……

opSet->MoveNext();

}

// 完事了,打扫战场

opSet->Close();
// 现在插入一条数据,我们使用_ConnectionPtr的Execute接口

// int nNumb = 12;

// CString strName("南京");

strSQL.Format("INSERT INTO tb_idealsoft(Numb, Name) VALUES(%d, '%s')", nNumb, strName); // 注意字符串型变量要用单引号括起来

// _variant_t vtEffe

opConn->Execute(_bstr_t(strSQL), &vtEffe, adCmdText);

long nEffe = vtEffe.lVal; // 被影响的行数

// ……
// 关闭,释放资源

opConn->Close();

::CoUninitialize();
-------- Access数据库的连接字符串格式 --------------------------------------

CString strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin; Data Source=") + strDbPath + _T(";");

if( BARE != strPsw )

{

strConnect += _T("Jet OLEDB:Database Password=") + strPsw;

}
转自:

http://hi.baidu.com/idealsoft/blog/item/d8152d03ba5773703812bb0d.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: