📄 单独使用crecordset .htm
字号:
<HTML>
<HEAD>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<meta HTTP-EQUIV='Expires' CONTENT=0>
<link rel='stylesheet' href='../../../../news.css'>
<style type='text/css'>
.fst{padding:0px 15px;width:770px;background:#eeeecc;border-left:1px solid #000000;border-right:1px solid #000000}
.fstdiv3 img{border:0px;border-right:8px solid #eeeecc;border-top:6px solid #eeeecc}
</style>
<title>
单独使用CRecordSet
</title>
</HEAD>
<BODY aLink=#990000 bgColor=#ffffff bottomMargin=0 leftMargin=0 rightMargin=0 topMargin=0 marginwidth=0 marginheight=0>
<center>
<TABLE align=center bgColor=#cccc99 border=0 cellPadding=2 cellSpacing=0 width=770>
<TBODY>
<TR>
<TH align=left >
单独使用CRecordSet
</TH>
</TD></TR>
</TBODY></TABLE>
<TABLE align=center bgColor=#eeeecc border=1 cellPadding=1 cellSpacing=0 width=770>
<TBODY>
<TR><TD colSpan=5 >
<a href='http://www.csdn.net'>中国软件开发网络</a>
-->
<a href='http://www.csdn.net/develop'>开发图书馆</a>
-->
<a href='http://www.csdn.net\develop\list_article.asp?lib=1&bigclassid=
1
'>
Visual C++
</a>
-->
<a href='http://www.csdn.net\develop\list_article.asp?lib=1&bigclassid=
1
&smallclassid=
106
'>
MFC或CPP
</a>
-->
<a href='
http://www.csdn.net/develop/library/vc/Cpp_MFC/1385.shtm
'>
单独使用CRecordSet
</a>
</TD></tr>
<TR>
<TD align=left width=300>
<B>关键字:</B><BR>
单独使用CRecordSet
</TD>
<TD align=middle width=120>
<B>贴文时间</B><br>
2000-11-22 9:51:38
</TD>
<TD align=middle width=80>
<B>文章类型: </B><BR>
转贴
</TD>
<TD align=middle width=100>
<B>给贴子投票 </B>
<BR><a href='http://www.csdn.net/develop/addscore.asp?id=
1385
'>投票</a>
</TD></TR>
<TR>
<TD >
ghj1976
转贴
</TD>
<TD colSpan=3 vAlign=top>
<B>出处: </B><A href='
http://www.vchelp.net/article/db_record.htm
'>
http://www.vchelp.net/article/db_record.htm
</A></TD></TR>
<TR><TD colSpan=5 bgcolor=#cccc99> </TD></TR>
</TD></TR></TBODY></TABLE>
<div align=center><div class=fst align=left><div class=fstdiv3 id=print2>
<br><br><TABLE align=center border=0 cellPadding=2 cellSpacing=0 width="95%">
<TBODY>
<TR bgColor=#e6e6e6>
<TD align=middle>闻怡洋 <A href="mailto:wyy_cq@21cn.com"><FONT class=engul>wyy_cq@21cn.com</FONT></A> <A href="http://www.vchelp.net/"><FONT class=engul>http://www.vchelp.net/</FONT></A> </TD></TR>
<TR bgColor=#f4f4f4>
<TD><!--article begin-->
<P>一般情况下AppWizard会在数据库应用程序中自动产生CRecordset的派生类,并将派生类和某个数据源中的表联系起来也可以和视图上的子窗口联系起来。但是有时这样做会影响到程序的灵活性,这时候我们可以单独使用CRecordSet类。利用CRecordSet类我们可以执行SQL语句,并可以读出结果集中数据。</P>
<P>首先我们需要包含头文件afxdb.h,可以将#include <AFXDB.H>添加到stdafx.h文件中。此外在使用CRecordset时必须有一个又一个CDatabase对象,该对象的作用是管理数据源连接。然后可以产生一个CRecordset对象,利用BOOL CRecordset::Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none )可以执行SQL语句。</P>
<P>但执行成功后,可以调用以下的函数滚动光标,读取数据。
<TABLE align=center border=1 width="90%">
<TBODY>
<TR>
<TD>MoveFirst</TD>
<TD>移动光标到第一条记录处</TD></TR>
<TR>
<TD>MoveNext</TD>
<TD>移动光标到后一条记录处</TD></TR>
<TR>
<TD>MovePrev</TD>
<TD>移动光标到前一条记录处</TD></TR>
<TR>
<TD>MoveLast</TD>
<TD>移动光标到最后一条记录处</TD></TR>
<TR>
<TD>IsBOF</TD>
<TD>检测光标是否在第一条记录上</TD></TR>
<TR>
<TD>IsEOF</TD>
<TD>检测光标是否在最后一条记录上</TD></TR>
<TR>
<TD>GetFieldValue</TD>
<TD>得到结果中数据</TD></TR></TBODY></TABLE>下面是具体代码: <PRE>/*
假设CDatabase m_dbConn为成员变量
假设有一个表有如下SQL语句产生:CREATE TABLE table1(loc_id not null)
*/
void CYourClass::ConnectToDB()
{//连接数据库
BOOL fOK = m_dbConn.Open("test");
TRACE("connect fOK=%d\n",m_dbConn);
}
void CYourClass::Select()
{//执行SELECT语句
CRecordset rec(&m_dbConn);
BOOL fOK = rec.Open(CRecordset::forwardOnly,"select loc_id from table1 order by loc_id");
TRACE("select fOK = %d\n",fOK);
TRACE("返回的列数为:%d\n",rec.GetRowsetSize());
CString szResult;
while(!rec.IsEOF())
{
rec.GetFieldValue((int)0,szResult);
rec.MoveNext();
TRACE("fetch : %s\n",szResult);
}
}
</PRE>
<P></P>
<P>此外CRecordset::GetFieldValue有很多种原型,你可以通过指定列位置或是字段名来获取数据:</P>
<P>void GetFieldValue( LPCTSTR <I>lpszName</I>, CDBVariant& <I>varValue</I>, short <I>nFieldType</I> = DEFAULT_FIELD_TYPE );<BR><BR>void GetFieldValue( short <I>nIndex</I>, CDBVariant& <I>varValue</I>, short <I>nFieldType</I> = DEFAULT_FIELD_TYPE );<BR><BR>void GetFieldValue( LPCTSTR <I>lpszName</I>, CString& <I>strValue</I> );<BR><BR>void GetFieldValue( short <I>nIndex</I>, CString& <I>strValue</I> );<BR></P>
<P>如果使用CDBVariant类型变量来获取结果,你可以得到任何类型的结果。在CDBVariant::m_dwType成员变量中记录了该变量所包含的数据类型,根据该变量的值你可以确定数据类型并引用CDBVariant对象中的相应成员变量。<A href="db_record.zip">下载本文示范代码</A></P><!--article end--></TD></TR></TBODY></TABLE><br><br>
</DIV></div></div>
<script src='../../../get_readnum.asp?id=
1385
'></script>
</center></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -