?? 1385.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 + -