我发现很多语言都用这种方法,来简化编程时的难度和开发速度
所以,我去查询了一些资料,看到一些像"金质通用数据访问类"这样的,简化开发难度的东西
不知,这种类,都是自己写的,还是说有正式一点的!!感觉每次用VC开发数据库时,类型转换和对象设置好麻烦,是不是有些成熟的开发方法我不知道
大家都使用什么方法简化?请高手指明!!!!小弟感激不尽
所以,我去查询了一些资料,看到一些像"金质通用数据访问类"这样的,简化开发难度的东西
不知,这种类,都是自己写的,还是说有正式一点的!!感觉每次用VC开发数据库时,类型转换和对象设置好麻烦,是不是有些成熟的开发方法我不知道
大家都使用什么方法简化?请高手指明!!!!小弟感激不尽
解决方案 »
- 如何使用VC6开发VC6的界面?
- 弱弱的问一下
- 属性表单 显示的位置怎么控制啊
- CSocket问题第二波,毕设最后一个难题,跪求大侠们帮忙!小弟感激不尽
- 想要读取字符串中的一部分内容,下面语句有问题,请大家帮忙改改好么?
- 请问用那个api函数可以得到窗口的class?
- 关于一个程序安装问题中涉及到的dll调用,真是奇怪,高手赐招!
- 利用ado读写dbf数据库时在winxp下一切正常,而在win98se下出现错误,求救!
- 单文档多视之间如何传递参数
- 求解问题第2步
- 如何控制现有软件的菜单或是按钮???
- 新手请教:如何在MDI项目中的主窗口菜单->窗口子菜单下记录当前打开的文件列表中,把"其它窗口..."去掉,全显示文件,就如在PhotoShip中
例如getValue(CString fieldName),要搞清Variant变量的用法,主要是其vt类型对应的c++(或者mfc类型),如VT_NULL就是空,VT_Bool就是bool,然后全部返回为CString ,反正不是要显示出来吗?当然根据需要把经常用的写好就行了。
//
////////////////////////////////////////////////////////////////////////几点说明:
//(1) 您的环境中msado15.dll不一定在这个目录下,请按实际情况修改
//(2) 在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。
//msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned ////////////////////////////////////////////////////////////////////////////////////////////////
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")#if !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
#define AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class ADOConn
{
// 定义变量
public:
//添加一个指向Connection对象的指针:
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针:
_RecordsetPtr m_pRecordset;
// 定义方法
public:
ADOConn();
virtual ~ADOConn();
// 初始化—连接数据库
void OnInitADOConn();
// 连接数据库,供登录时测试用
void TestADOConn(CString servername,CString username,CString password);
// 执行查询
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
// 执行SQL语句,Insert Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};#endif // !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
// ADOConn.cpp: implementation of the ADOConn class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "ADOConn.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////ADOConn::ADOConn()
{}ADOConn::~ADOConn()
{}// 初始化—连接数据库
void ADOConn::OnInitADOConn()
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB; Server=192.168.0.14;Database=xjgl; uid=sa; pwd=sa;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}//以下用于测试数据库联接
void ADOConn::TestADOConn(CString servername,CString username,CString password)
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB; Server=" + servername + ";Database=xjgl; uid=" + username + "; pwd=" + password + ";"; m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}
// 执行查询
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
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 RecordsAffected;
try
{
// 是否已经连接数据库
if(m_pConnection == NULL)
OnInitADOConn();
// 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)
{
AfxMessageBox(e.Description());
return false;
}
}void ADOConn::ExitConnect()
{
// 关闭记录集和连接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 释放环境
::CoUninitialize();
}