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"也可以是你的数据库服务器的名称,连接数据库的时候可以看到,复制一下就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)