MFC连接数据库的问题
看到很多教程上写,用这样的方式连接:#import"c:\programfiles\commonfiles\system\ado\msado15.dll"\no_name...
看到很多教程上写,用这样的方式连接:
#import "c:\program files\common files\system\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")
我有个疑问,如果用户电脑系统盘是D盘怎么办,无法智能识别?
第二个问题,在实际项目中,MFC操作SQL SERVER 2000这样的数据库,究竟是如何操作的,希望各位朋友给出代码或者实例。
如果有实际项目代码就更好了,如果有实际项目的源代码,可以发送到:
p523399@sina.com,谢谢大家。
再次感谢大家的帮助。
如果有其他看法和建议,也欢迎提出来。。。
各位朋友,感谢大家的回答,目前我急需一份MFC中使用ADO来访问数据库的实际项目,
不知道哪位朋友能提供一下,发到我上面的邮箱中去,感激不尽。。。 展开
#import "c:\program files\common files\system\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")
我有个疑问,如果用户电脑系统盘是D盘怎么办,无法智能识别?
第二个问题,在实际项目中,MFC操作SQL SERVER 2000这样的数据库,究竟是如何操作的,希望各位朋友给出代码或者实例。
如果有实际项目代码就更好了,如果有实际项目的源代码,可以发送到:
p523399@sina.com,谢谢大家。
再次感谢大家的帮助。
如果有其他看法和建议,也欢迎提出来。。。
各位朋友,感谢大家的回答,目前我急需一份MFC中使用ADO来访问数据库的实际项目,
不知道哪位朋友能提供一下,发到我上面的邮箱中去,感激不尽。。。 展开
展开全部
为什么要用ADO呢?
好好想想为什么数据库有多套接口, ODBC, OLE DB, ADO.
好好想想为什么数据库有多套接口, ODBC, OLE DB, ADO.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实际中不用这么麻烦啊,数据库很好做的,建议你买本数据库的书看看,实际项目有很多不知道你的项目要实现什么功能呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#import "D:\program files\common files\system\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")
ADO数据库连接
步骤如下:
1. 创建应用程序对话框
2. 使用#import指令添加对ADO的支持
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","EndOfFile")
3. 初始化COM对象
在OnInitDialog()函数总初始化COM对象
4. 定义_ConnectionPtr变量,并建立数据库连接
5. 定义_RecordsetPtr变量,并打开结果记录集
4、5代码如下:
_ConnectionPtr m_pConn;//连接对象指针
_RecordsetPtr m_pRs;//记录集对象指针
6. 检索记录
7. 编辑、更新记录
8. 关闭记过记录集和数据库连接
9. 释放COM环境
代码如下:
::CoInitialize(NULL);//初始化COM环境 //ADO对象在实例化必须在COM环境初始化之后
m_pConn.CreateInstance(__uuidof(Connection));//实例化连接对象
m_pRs.CreateInstance(__uuidof(Recordset)); //实例化记录集对象
m_pConn->Open("students","","",adConnectUnspecified);//打开数据库连接,students是数据库源的名称
//以上的内容在初始化函数中,下面的记录集的可以在相应的操作函数中打开 _variant_t vFieldValue;//记录集字段值变量
HRESULT hr= m_pRs->Open("select * from Table1",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); //打开一个记录集对象,返回查询的表
ADO添加记录(一)
if(!m_pRs->Supports(adAddNew))//确定支持AddNew()方法
return;
m_pRs->AddNew();//添加新记录
m_pRs->Fields->GetItem(_variant_t("姓名"))->Value=_bstr_t("张三");//设置记录集对象的字段的值
m_pRs->Update();//更新修改
m_pRs->Close();
*ADO修改记录(也可以用作添加记录)
m_pRs->PutCollect(_variant_t("姓名"),_variant_t("阿飞"));
m_pRs->Update();
m_pRs->Close();
*ADO删除记录
m_pRs->Delete(adAffectCurrent);//删除当前记录
*ADO提取记录
_variant_t varTemp;
CString strName;
varTemp = m_pRecordset->GetCollect(_variant_t("姓名"));
if(varTemp.vt!=VT_NULL)
strName = (LPCTSTR)(_bstr_t)varTemp;
*ADO添加记录(二)
//打开记录集对象
HRESULT hr=m_pRs->Open("SELECT * FROM 工作单位",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
if(FALED(hr))
return;
if(!m_pRs->Supports(adAddNew))
return;
_variant_t vField[4],vValue[4];//字段和字段值数组
vFiedl[0]=L"单位编号";
vFiedl[1]=L"单位名称";
vFiedl[2]=L"单位地址";
vFiedl[3]=L"邮政编码";
vValue[0]=_bstr_t("W06005");
vValue[1]=_bstr_t("****科技有限公司");
vValue[2]=_bstr_t("哈尔滨南岗区");
vValue[3]=_bstr_t("150090");
SAFEARRAYBOUND rgsaBound;//SAFEARRAYBOUND结构变量
rgsaBound.lLbound=0L;
rgsaBound.cElements=4;//字段数
SAFEARRAY *psaField = SafeArrayCreate(VT_VARIANT,1,&rgsaBound);//SAFEARRAY 结构数据
SAFEARRAY *psaValue = SafeArrayCreate(VT_VARIANT,1,&rgsaBound);
for(long i=0;i<4;i++)//初始化SAFEARRAY结构数组
{
SafeArrayPutElement(pasField,&i,&vField[i]);
SafeArrayPutElement(pasValue,&i,&vValue[i]);
}
VARIANT vsaField,vsaValue;
vsaField.vt = VT_VARIANT | VT_ARRAY;
vsaValue.vt = VT_VARIANT | VT_ARRAY;
V_ARRAY(&vsaField)=psaField;
V_ARRAY(&vsaValue)=psaValue;
m_pRs->AddNew(vsaField,vsaValue);//添加新记录
m_pRs->Close();
no_namespace rename("EOF","adoEOF")
ADO数据库连接
步骤如下:
1. 创建应用程序对话框
2. 使用#import指令添加对ADO的支持
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","EndOfFile")
3. 初始化COM对象
在OnInitDialog()函数总初始化COM对象
4. 定义_ConnectionPtr变量,并建立数据库连接
5. 定义_RecordsetPtr变量,并打开结果记录集
4、5代码如下:
_ConnectionPtr m_pConn;//连接对象指针
_RecordsetPtr m_pRs;//记录集对象指针
6. 检索记录
7. 编辑、更新记录
8. 关闭记过记录集和数据库连接
9. 释放COM环境
代码如下:
::CoInitialize(NULL);//初始化COM环境 //ADO对象在实例化必须在COM环境初始化之后
m_pConn.CreateInstance(__uuidof(Connection));//实例化连接对象
m_pRs.CreateInstance(__uuidof(Recordset)); //实例化记录集对象
m_pConn->Open("students","","",adConnectUnspecified);//打开数据库连接,students是数据库源的名称
//以上的内容在初始化函数中,下面的记录集的可以在相应的操作函数中打开 _variant_t vFieldValue;//记录集字段值变量
HRESULT hr= m_pRs->Open("select * from Table1",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); //打开一个记录集对象,返回查询的表
ADO添加记录(一)
if(!m_pRs->Supports(adAddNew))//确定支持AddNew()方法
return;
m_pRs->AddNew();//添加新记录
m_pRs->Fields->GetItem(_variant_t("姓名"))->Value=_bstr_t("张三");//设置记录集对象的字段的值
m_pRs->Update();//更新修改
m_pRs->Close();
*ADO修改记录(也可以用作添加记录)
m_pRs->PutCollect(_variant_t("姓名"),_variant_t("阿飞"));
m_pRs->Update();
m_pRs->Close();
*ADO删除记录
m_pRs->Delete(adAffectCurrent);//删除当前记录
*ADO提取记录
_variant_t varTemp;
CString strName;
varTemp = m_pRecordset->GetCollect(_variant_t("姓名"));
if(varTemp.vt!=VT_NULL)
strName = (LPCTSTR)(_bstr_t)varTemp;
*ADO添加记录(二)
//打开记录集对象
HRESULT hr=m_pRs->Open("SELECT * FROM 工作单位",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
if(FALED(hr))
return;
if(!m_pRs->Supports(adAddNew))
return;
_variant_t vField[4],vValue[4];//字段和字段值数组
vFiedl[0]=L"单位编号";
vFiedl[1]=L"单位名称";
vFiedl[2]=L"单位地址";
vFiedl[3]=L"邮政编码";
vValue[0]=_bstr_t("W06005");
vValue[1]=_bstr_t("****科技有限公司");
vValue[2]=_bstr_t("哈尔滨南岗区");
vValue[3]=_bstr_t("150090");
SAFEARRAYBOUND rgsaBound;//SAFEARRAYBOUND结构变量
rgsaBound.lLbound=0L;
rgsaBound.cElements=4;//字段数
SAFEARRAY *psaField = SafeArrayCreate(VT_VARIANT,1,&rgsaBound);//SAFEARRAY 结构数据
SAFEARRAY *psaValue = SafeArrayCreate(VT_VARIANT,1,&rgsaBound);
for(long i=0;i<4;i++)//初始化SAFEARRAY结构数组
{
SafeArrayPutElement(pasField,&i,&vField[i]);
SafeArrayPutElement(pasValue,&i,&vValue[i]);
}
VARIANT vsaField,vsaValue;
vsaField.vt = VT_VARIANT | VT_ARRAY;
vsaValue.vt = VT_VARIANT | VT_ARRAY;
V_ARRAY(&vsaField)=psaField;
V_ARRAY(&vsaValue)=psaValue;
m_pRs->AddNew(vsaField,vsaValue);//添加新记录
m_pRs->Close();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询