mfc 获取数据库的元素,或者变量
答案:1 悬赏:60 手机版
解决时间 2021-03-19 13:29
- 提问者网友:最爱你的唇
- 2021-03-18 12:52
mfc 获取数据库的元素,或者变量
最佳答案
- 五星知识达人网友:掌灯师
- 2021-03-18 14:06
如果你已经连接到数据库的话,获取变量的方法如下:
在头文件中定义一个变量:
_RecordsetPtr pRst;
CPP文件中:
pRst.CreateInstance("ADODB.Recordset");
pRst->Open("select *from表名 where 字段名='"+u+"'",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);//u是变量名
u的类型是_bstr_t 的,凡是变量的都是_bstr_t型的,
这样搞定之后,if(!pRst->rsEOF)
{
_variant_t p=pRst->GetCollect("表中的字段名");
}
把值取出,GetCollect("xxx");这个函数的返回值都是_variant_t型的,根据你的需要可以进行转化
例如:
_bstr_t a=(_bstr_t) p;(p是_variant_t)型的,CString b=(LPCTSTR)a(a是_bstr_t型的),
int c=(long)p(p是_variant_t)型的,_variant_t d=(_variant_t)(long) c(c是int型的);
如果你的数据没有连接的话:
步骤如下:
用ADO连接SQL数据库
步骤如下:
1,在头文件"StdAfx.h"中导入#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","rsEOF"),记住把这句话放到endif的后面,不然会报错,这样处理好之后,编译后又一个警告,可以忽略
2,在对话框的OnInitDialog()函数中写上"::CoInitialize(NULL);::AfxOleInit(); ” 在主程序的初始化函数中,它就可以写一次
3,在对话框类的头文件中,声明如下变量:_ConnectionPtr m_pConnection;_RecordsetPtr pRst;
连接数据库的代码如下:
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=数据库的驱动器名称;Integrated Security=SSPI;Persist Security Info=False;Data Source=数据库服务器名;Initial Catalog=连接的数据库名; User ID=登陆数据库的名称;Password=登陆数据库的密码;","","",adModeUnknown);
}
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
”数据库的驱动器名称“在控制面板里,以大图标查看,可以看到一个"ODBC",双击打开,在”驱动程序“里面在最下面有两个”SQL Server"和“SQL Native Client"如果你是2000的SQL版本,就选”SQL Server"及“Provider=SQL Server"2005的"Provider=SQL Native Client"Data Source=? ,?的值可以是”localhost"也可以是你的数据库服务器的名称,连接数据库的时候可以看到,复制一下就可以了。
在头文件中定义一个变量:
_RecordsetPtr pRst;
CPP文件中:
pRst.CreateInstance("ADODB.Recordset");
pRst->Open("select *from表名 where 字段名='"+u+"'",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);//u是变量名
u的类型是_bstr_t 的,凡是变量的都是_bstr_t型的,
这样搞定之后,if(!pRst->rsEOF)
{
_variant_t p=pRst->GetCollect("表中的字段名");
}
把值取出,GetCollect("xxx");这个函数的返回值都是_variant_t型的,根据你的需要可以进行转化
例如:
_bstr_t a=(_bstr_t) p;(p是_variant_t)型的,CString b=(LPCTSTR)a(a是_bstr_t型的),
int c=(long)p(p是_variant_t)型的,_variant_t d=(_variant_t)(long) c(c是int型的);
如果你的数据没有连接的话:
步骤如下:
用ADO连接SQL数据库
步骤如下:
1,在头文件"StdAfx.h"中导入#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","rsEOF"),记住把这句话放到endif的后面,不然会报错,这样处理好之后,编译后又一个警告,可以忽略
2,在对话框的OnInitDialog()函数中写上"::CoInitialize(NULL);::AfxOleInit(); ” 在主程序的初始化函数中,它就可以写一次
3,在对话框类的头文件中,声明如下变量:_ConnectionPtr m_pConnection;_RecordsetPtr pRst;
连接数据库的代码如下:
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=数据库的驱动器名称;Integrated Security=SSPI;Persist Security Info=False;Data Source=数据库服务器名;Initial Catalog=连接的数据库名; User ID=登陆数据库的名称;Password=登陆数据库的密码;","","",adModeUnknown);
}
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
”数据库的驱动器名称“在控制面板里,以大图标查看,可以看到一个"ODBC",双击打开,在”驱动程序“里面在最下面有两个”SQL Server"和“SQL Native Client"如果你是2000的SQL版本,就选”SQL Server"及“Provider=SQL Server"2005的"Provider=SQL Native Client"Data Source=? ,?的值可以是”localhost"也可以是你的数据库服务器的名称,连接数据库的时候可以看到,复制一下就可以了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯