亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? odbc_classgen.shtml.htm

?? 隨書類文件![隨書類]MFC_SOURCEBOOK
?? HTM
字號:
<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
   <META NAME="Author" CONTENT="Zafir Anjum">
   <TITLE>Tools - ODBC Class generator</TITLE>
</HEAD>
<body background="../fancyhome/back.gif" tppabs="http://www.codeguru.com/fancyhome/back.gif" bgcolor="#FFFFFF" link="#B50029" vlink="#8E2323" alink="#FF0000" bgproperties="fixed">
<table WIDTH="100%">
<tr WIDTH="100%">
<td><A HREF="http://209.66.99.126/cgi/ads.cgi?advert=genitor"><IMG SRC="../banners/genitor.gif" tppabs="http://www.codeguru.com/banners/genitor.gif" HEIGHT=60 WIDTH=468 ALT="Genitor - award-winning Object Construction Suite for C/C++ development, documentation, and maintainance" BORDER=2></A><BR><SMALL><A HREF="http://209.66.99.126/cgi/ads.cgi?advert=genitor">Click here to get a trail copy of Genitor V3.1</A></SMALL><td>
</tr>
</table>

<CENTER>
<H3>
<FONT COLOR="#AOAO99">ODBC Class Generator For Bulk Row Fetching</FONT></H3></CENTER>

<HR>

<p><font face="Arial">(Designed and developed by <a href="mailto:ShekarNarayanan@hotmail.com">Shekar Narayanan</a>)</font></font><font ></p>

<p></font><font >I have developed this Class Generator after using the CRecordset
for quite some time. CRecordset is great but it has lot of limitations and is SLOW. </p>

<p>Most of the time, I had to display thousands of records in a list view. Using the
CRecordset, it takes a lot of time. MFC also provides a way to do &#145;<strong>bulk fetch</strong>&#146;
but it is tedious to implement.</p>

<p>So, I created a class which will do the <b>bulk fetching</b> and also allow easy
inserts, update and delete. After creating tens of these kind of classes, it was no
difficult to automate the class creation process.</p>
<i><b>

<p>A simple comparison:</b></i></p>

<p>The code generated by this tool along with virtual list view <strong>gets and displays
5000 records from SQL server database in just</font><font > one second!</font></strong><font ><b> </b>Whereas, using the CRecordset, it takes <b>around 20 seconds. </b>These
numbers are based on 266 MHz Pentium with 64MB RAM..</p>

<p>&nbsp;</font><font FACE="Arial"><i><b></p>

<p>Features</b></i></font><font ></p>

<blockquote>
  <ul>
    <li>Easily create a class which uses Bulk Row Fetching for faster data retrieval</li>
    <li>Uses direct ODBC SDK calls which are easy to understand and flexible to modify</li>
    <li>More methods can be easily added to the object</li>
    <li>Creating Joins and using other SQL features is very easy, since the object uses direct
      SQL statements</li>
  </ul>
  <p></font>&nbsp;</p>
</blockquote>
<font FACE="Arial"><i><b>

<p>Usage of the Product</b></i></font><font SIZE="2"></p>

<p>Using the Class Generator is easy. </p>

<blockquote>
  <ul>
    <li>Click Open to display the list of Data Sources</li>
    <li>Select the Data Source and click Next</li>
    <li>Select the Table or View you want to use and click Next</li>
    <li>Click Finish</li>
  </ul>
</blockquote>

<p>A list view displays the columns in the table along with the default member variables.
You can easily change the name of the member variable and if you want to exclude any
column from the object, you can do that by simply clicking Remove button.</p>

<p><img src="odbc_classgen.jpg" tppabs="http://www.codeguru.com/tools/odbc_classgen.jpg" WIDTH="823" HEIGHT="402"></p>

<p>&nbsp;After changing /removing the variable names, click the Create button to open the
Generate Dialog box. It shows the default values based the on the table name. After
modifying the values click the OK button to generate the code. You can also print this
list.</p>

<p>&nbsp;</p>

<p>Following is a sample header file generated by this tool:</font><font FACE="Courier" SIZE="2"></p>

<p>/*</p>

<p>**ConsultantsSet.h</p>

<p>**CONSULTANTS Definition file</p>

<p>*/</p>

<p>#if !defined(__DB_CONSULTANTS_FIELDS__)</p>

<p>#define __DB_CONSULTANTS_FIELDS__</p>

<p>#ifndef __AFXTEMPL_H__</p>

<p>#pragma message(&quot;Include AfxTempl.h in StdAfx.h for faster Compilation&quot;)</p>

<p>#include &lt;afxtempl.h&gt;</p>

<p>#endif</p>

<p>#define CONSULTANTS_NAME_SIZE 31</p>

<p>#define CONSULTANTS_HOME_ADDRESS_SIZE 81</p>

<p>#define CONSULTANTS_CLIENT_NAME_SIZE 31</p>

<p>#define CONSULTANTS_CLIENT_ADDRESS_SIZE 81</p>

<p>&nbsp;</p>

<p>//Internal Cache for the data</p>

<p>typedef struct</p>

<p>{</p>

<blockquote>
  <p>long m_ID;</p>
  <p>SDWORD m_IDInd;</p>
  <p>char m_Name[CONSULTANTS_NAME_SIZE];</p>
  <p>SDWORD m_NameInd;</p>
  <p>char m_HomeAddress[CONSULTANTS_HOME_ADDRESS_SIZE];</p>
  <p>SDWORD m_HomeAddressInd;</p>
  <p>char m_ClientName[CONSULTANTS_CLIENT_NAME_SIZE];</p>
  <p>SDWORD m_ClientNameInd;</p>
  <p>char m_ClientAddress[CONSULTANTS_CLIENT_ADDRESS_SIZE];</p>
  <p>SDWORD m_ClientAddressInd;</p>
</blockquote>

<p>}FF_DB_CONSULTANTS_FIELDS, *pFF_DB_CONSULTANTS_FIELDS;</p>

<p>&nbsp;</p>

<p>//structure to hold the final data</p>

<p>typedef struct</p>

<p>{</p>

<blockquote>
  <p>long m_ID;</p>
  <p>CString m_Name;</p>
  <p>CString m_HomeAddress;</p>
  <p>CString m_ClientName;</p>
  <p>CString m_ClientAddress;</p>
</blockquote>

<p>}DB_CONSULTANTS_FIELDS, *pDB_CONSULTANTS_FIELDS;</p>

<p>&nbsp;</p>

<p>//Class Definition</p>

<p>class CConsultantsSet</p>

<p>{</p>

<p>public:</p>

<p>//Standard constructor</p>

<p>CConsultantsSet(CDatabase* pDB = NULL);</p>

<p>//Standard Destructor</p>

<p>~CConsultantsSet();</p>

<p>//Operations</p>

<p>bool GetSpecific(pDB_CONSULTANTS_FIELDS);</p>

<p>bool Insert(pDB_CONSULTANTS_FIELDS);</p>

<p>bool Update(pDB_CONSULTANTS_FIELDS);</p>

<p>bool Delete(pDB_CONSULTANTS_FIELDS);</p>

<p>int Load();</p>

<p>//Attributes</p>

<p>CTypedPtrArray &lt;CPtrArray, pDB_CONSULTANTS_FIELDS&gt; m_aData;</p>

<p>private:</p>

<p>CDatabase* m_pDatabase;</p>

<p>HSTMT m_hstmt;</p>

<p>int m_nRowSetSize;</p>

<p>};</p>

<p>#endif</p>

<p>/*</p>

<p>** end file</p>

<p>*/</font><font SIZE="2"></p>

<p>&nbsp;</p>

<p>The header file contains two structures FF_DB_CONSULTANTS_FIELDS and
DB_CONSULTANTS_FIELDS. The first one is used for bulk row fetching. The second is used to
in a CTypedPtrArray and contains the actual data.</p>

<p>&nbsp;</font><font face="Arial"><i><b></p>

<p>Using the Generated Code in your Application</b></i></font><font SIZE="2"></p>

<p>In order to use this class in your application, create a regular MFC application with
database header support. The View can be either CFormView or CListView . In this example,
m_List is a CListCtrl.</font><font FACE="Courier" SIZE="2"></p>

<p>#include &quot;ConsultantSet.h&quot;</p>

<p>&nbsp;</p>

<p>void OnInitialUpdate()</p>

<p>{</p>

<p>&nbsp;&nbsp;&nbsp; . . . </p>

<p>&nbsp;&nbsp;&nbsp; CConsultantSet tblSet(&amp;theApp.m_DB);</p>

<p>&nbsp;&nbsp;&nbsp; int nCount = tblSet.Load();</p>

<p>&nbsp;&nbsp;&nbsp; for (int I = 0; I &lt; nCount; I++)</p>

<p>&nbsp;&nbsp;&nbsp; {</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDB_CONSULTANT_FIELDS pdbFields =
tblSet.m_aData.GetAt(I);</p>

<blockquote>
  <blockquote>
    <p>m_List.InsertItem(I, pdbFields-&gt;m_Name;</p>
    <p>m_List.SetItemText(I, pdbFields-&gt;m_ClientName);</p>
  </blockquote>
</blockquote>

<p>&nbsp;&nbsp;&nbsp; }</p>

<p>}</p>

<p>&nbsp;</p>

<p>If you want to insert an item to the table,</p>

<p>&nbsp;&nbsp;&nbsp; CConsultantSet tblSet(&amp;theApp.m_DB);</p>

<p>&nbsp;&nbsp;&nbsp; DB_CONSULTANT_FIELDS dbFields;</p>

<p>&nbsp;&nbsp;&nbsp; dbFields.m_ID = 100;</p>

<p>&nbsp;&nbsp;&nbsp; dbFields.m_Name = &quot;Some Name&quot;;</p>

<p>&nbsp;&nbsp;&nbsp; // Fill in rest of the fields</p>

<p>&nbsp;&nbsp;&nbsp; tblSet.Insert(&amp;dbFields);</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>Rest of the functions, follow the same standard and very easy to understand. I always
use a single CDatabase object in the Application class. Create a CDatabase member variable
in the CWinApp derived class and also make the 'theApp' as extern in the header file. This
way, you don't have to use AfxGetApp() and typecast it every time.</p>

<p>&nbsp;</font></p>

<p>This tool generates the code which can be compiled in VC++ 5.0. With minor
modification, it can be used with any C++ compiler.</p>

<p><font FACE="Courier" SIZE="2">&nbsp;</font>I have tested this tool with MS Access and
SQL Server only. So there may be a few bugs. If you encounter any bugs, please email me.</p>

<p>I would appreciate your ideas for enhancements.</p>

<p>&nbsp;</p>

<p>Acknowledgments:</p>

<p>I would like to thank the <a href="../index.htm" tppabs="http://www.codeguru.com/">CodeGuru</a> contributors
for List Control and Bitmap buttons I have used in this tool.</p>



<P><A HREF="odbc_classgen.zip" tppabs="http://www.codeguru.com/tools/odbc_classgen.zip">Download</A> 274K





<P>Posted on: March 8, 98.
<br>Changed the download file from EXE to ZIP - 3/10/98

<P>
<HR>
<TABLE BORDER=0 WIDTH="100%" >
<TR>
<TD WIDTH="33%"><FONT SIZE=-1><A HREF="../index.htm" tppabs="http://www.codeguru.com/">Goto HomePage</A></FONT></TD>

<TD WIDTH="33%">
<CENTER><FONT SIZE=-2>&copy; 1997 Zafir Anjum</FONT>&nbsp;</CENTER>
</TD>

<TD WIDTH="34%">
<DIV ALIGN=right><FONT SIZE=-1>Contact me: <A HREF="mailto:zafir@home.com">zafir@home.com</A>&nbsp;</FONT></DIV>
</TD>
</TR>
</TABLE>
<CENTER><FONT SIZE=-2>3687</FONT></CENTER>
</BODY>
</HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色中色一区二区| 在线看国产日韩| 亚洲一区二区三区在线看| 国产精品一区二区视频| 日韩欧美中文字幕制服| 天天色综合天天| 国产欧美日韩精品一区| 国产成人av影院| 天堂午夜影视日韩欧美一区二区| 欧美性色欧美a在线播放| 亚洲成av人片在线观看无码| 欧美性猛交xxxx黑人交| 五月婷婷综合网| 又紧又大又爽精品一区二区| 在线区一区二视频| 丰满岳乱妇一区二区三区| 国产精品少妇自拍| 精品动漫一区二区三区在线观看| 黄色精品一二区| 五月婷婷色综合| 亚洲一区二区三区视频在线| 欧美精品日日鲁夜夜添| 久久激情五月激情| 日韩制服丝袜先锋影音| 精品国产乱码久久久久久图片| 国产在线精品一区二区不卡了| 国产欧美精品一区| 精品免费视频.| 日韩免费看的电影| 欧美精品乱码久久久久久按摩| 狠狠色狠狠色合久久伊人| 国产精品第一页第二页第三页| 欧美怡红院视频| 日本韩国一区二区三区视频| 天堂蜜桃一区二区三区| 久久精品亚洲精品国产欧美kt∨| 91视频国产资源| 91麻豆自制传媒国产之光| 日韩成人午夜电影| 天堂va蜜桃一区二区三区漫画版| 久久久影视传媒| 国产欧美1区2区3区| 欧美色涩在线第一页| 国产一区二区精品久久91| 一区二区三区在线播| 精品99一区二区| 精品国产伦一区二区三区观看方式 | 日韩精品一区二| 日韩精品一区二区三区三区免费| 成人av网站在线| 成人激情黄色小说| 91老师片黄在线观看| 七七婷婷婷婷精品国产| 亚洲人成伊人成综合网小说| 日韩精品自拍偷拍| 久久亚洲免费视频| 国产精品欧美经典| 亚洲一二三四区| 日本aⅴ免费视频一区二区三区 | 调教+趴+乳夹+国产+精品| 久久久久久久久久久久久夜| 色狠狠一区二区| 欧美欧美午夜aⅴ在线观看| 国产麻豆9l精品三级站| 丝袜美腿成人在线| 国产一区二区在线电影| 午夜精品久久久久久| 亚洲欧美视频在线观看视频| 久久综合色综合88| 亚洲欧洲精品成人久久奇米网| 亚洲精品一区二区三区香蕉| 欧美福利视频一区| 久久精品亚洲国产奇米99| 日韩精品在线看片z| 欧美日韩一区二区三区四区五区| 成人av网站免费观看| 国产福利91精品一区二区三区| 日本午夜一区二区| 成人av网在线| 91精品麻豆日日躁夜夜躁| 91国偷自产一区二区使用方法| 成人免费看黄yyy456| 国产一二精品视频| 欧美影院午夜播放| 久久夜色精品国产欧美乱极品| 91.com在线观看| 国产精品丝袜一区| 久久精品国产一区二区| 天堂av在线一区| 成人av网站大全| 精品精品国产高清一毛片一天堂| 欧美一级欧美一级在线播放| 欧美日韩国产综合久久| 欧美日韩亚洲综合在线 | 精品国产污污免费网站入口| 日韩视频在线一区二区| 日韩欧美色电影| 亚洲你懂的在线视频| 亚洲免费观看视频| 极品美女销魂一区二区三区免费| 精品影视av免费| 日本高清成人免费播放| 欧美主播一区二区三区| 欧美日韩在线免费视频| 欧美久久久久久久久中文字幕| 欧美日韩亚洲综合一区 | 一区二区三区四区乱视频| 亚洲成人免费视| 91老司机福利 在线| 欧美熟乱第一页| 国产精品传媒视频| 国产精品自产自拍| 欧美va亚洲va香蕉在线| 久久九九全国免费| 奇米四色…亚洲| 88在线观看91蜜桃国自产| 欧美一区二区黄| 丝袜亚洲另类丝袜在线| 精品一区二区国语对白| 国产精品888| 精品国产91洋老外米糕| 国产亚洲综合av| 看电影不卡的网站| 91麻豆精品久久久久蜜臀| 精品久久久久一区| 美女mm1313爽爽久久久蜜臀| 国产91在线|亚洲| 国产亚洲制服色| 国产精品一二三| 国产日韩精品视频一区| 专区另类欧美日韩| 99热国产精品| 免费在线观看成人| 91精品视频网| 美美哒免费高清在线观看视频一区二区 | 亚洲国产高清在线观看视频| 亚洲另类春色国产| 色综合天天综合网国产成人综合天 | 成人网页在线观看| 国产精品美女久久福利网站| 亚洲第一久久影院| 欧美日韩黄视频| 免费不卡在线视频| 欧美成人aa大片| 国产一区日韩二区欧美三区| 色噜噜狠狠成人中文综合| 精品久久久久香蕉网| 亚洲另类色综合网站| 国产乱码精品一区二区三区五月婷 | 国产精品欧美极品| 成人精品一区二区三区中文字幕| 欧美精品一二三| 日韩成人精品视频| 精品久久久久av影院 | 精品一区中文字幕| 国产精品午夜久久| 色久综合一二码| 日韩精品1区2区3区| 在线视频国内一区二区| 欧美激情中文不卡| 色哟哟在线观看一区二区三区| 26uuu精品一区二区| 丝袜亚洲另类欧美| 久久久青草青青国产亚洲免观| 亚洲国产另类av| 精品美女在线播放| 成人app网站| 亚洲伊人色欲综合网| 风间由美性色一区二区三区| 精品国一区二区三区| 天堂成人国产精品一区| 色噜噜狠狠一区二区三区果冻| 欧美激情中文字幕一区二区| 精品一区二区在线看| 制服视频三区第一页精品| 亚洲一区二区三区中文字幕 | 成人性生交大片| 一二三区精品福利视频| 99久久99久久免费精品蜜臀| 国产日产欧美一区二区三区| 寂寞少妇一区二区三区| 日韩亚洲欧美一区二区三区| 亚洲国产一区二区三区青草影视| 91久久线看在观草草青青| 亚洲欧美一区二区三区极速播放| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | jlzzjlzz亚洲日本少妇| 久久精品亚洲一区二区三区浴池| 麻豆精品在线播放| 亚洲欧洲色图综合| 日韩网站在线看片你懂的| 日本中文字幕一区| 亚洲人成伊人成综合网小说| 99久久精品国产一区二区三区| 中文字幕中文在线不卡住| 9久草视频在线视频精品| 中文字幕在线不卡| 亚洲精品一区二区三区四区高清| 黑人巨大精品欧美黑白配亚洲| 久久久精品综合|