mfc中怎么读长度较大的数据库数据

mfc中怎么读长度较大的数据库数据,第1张

我一般用CString类型的变量承接数据库的字符串。

CString 它实质上是有一个类似于 char* 的成员变量,指向一个用开劈的内存,原则上来说是可以无限大的。CSDN上:A CString object can store up to INT_MAX (2,147,483,647) characters.

-------------

参考:字符串太长怎么办?http://bbs.csdn.net/topics/280025555

长字符串放文件里,读取文件的方式。

直接用双引号,一行一行的放,行尾什么都不要放,就可以了,不要搞什么断行的“\”来拼凑。 --这个用MessagebBox测试可以,但是有可能编译器不支持太长(超过2048)的字符串。

首先在stdafx.h中添加如下

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")

上面的路径根据你自己的更改

然后在你要查询的地方写如下代码:

CoInitialize(NULL)

_ConnectionPtr pConn(__uuidof(Connection))

_RecordsetPtr pRst(__uuidof(Recordset))

_CommandPtr pCmd(__uuidof(Command))

pConn->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source="C:\a.mdb"

//这里的数据库也是你的绝对路径

pConn->Open("","","",adConnectUnspecified)

pRst = pConn->Execute("Select * from ...",NULL,adCmdText)

while(!pRst->rsEOF)

{

/*

这里写你怎么把数据读取到外面,如下面是吧数据读到一个ListB0x控件中

((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("这里写属性名"))

*/

pRst->MoveNext()

}

pRst->Close()

pConn->Close()

pRst.Release()

pConn.Release()

pCmd.Release()

CoUninitialize()

如果你已经连接到数据库的话,获取变量的方法如下:

在头文件中定义一个变量:

_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=SSPIPersist Security Info=FalseData 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"也可以是你的数据库服务器的名称,连接数据库的时候可以看到,复制一下就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6463364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存