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

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

?? odbc_classgen.shtml.htm

?? mfc資料集合5
?? 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一区二区三区免费野_久草精品视频
国产婷婷色一区二区三区四区 | 日产国产高清一区二区三区| 国产成人精品亚洲午夜麻豆| 欧美大片一区二区三区| 免费成人结看片| 亚洲国产精品高清| 激情综合色丁香一区二区| 欧美一区二区三区男人的天堂| 久久精品国产亚洲一区二区三区| 欧美成人vps| 成人午夜视频在线观看| 亚洲精品乱码久久久久| 欧美日韩国产高清一区二区三区| 日韩av高清在线观看| 26uuu亚洲综合色| 在线欧美小视频| 国模套图日韩精品一区二区| jizzjizzjizz欧美| 性久久久久久久久久久久| 午夜精品久久久久久久| 免费成人美女在线观看| 麻豆91精品视频| 国产成人精品亚洲午夜麻豆| 国产精品一区二区在线观看不卡| 另类综合日韩欧美亚洲| 国产精品2024| 成人aaaa免费全部观看| 色综合久久久久综合体| 欧美顶级少妇做爰| 国产亚洲欧洲997久久综合 | 色婷婷综合视频在线观看| 欧美三级三级三级爽爽爽| 日韩欧美一二三| ...中文天堂在线一区| 亚洲一区二区三区四区在线免费观看 | 国产精品家庭影院| 久久久国产一区二区三区四区小说 | 欧美自拍丝袜亚洲| 经典一区二区三区| 国产精品性做久久久久久| 国产成人精品亚洲日本在线桃色| 久久国产精品99精品国产| 国内精品国产三级国产a久久| 麻豆精品视频在线观看免费| 国产精华液一区二区三区| 色综合一区二区三区| 欧美午夜不卡视频| 欧美一区二区三区视频| 亚洲免费观看在线观看| 精品一区二区三区视频在线观看 | 北岛玲一区二区三区四区| 欧美本精品男人aⅴ天堂| 国产成人精品三级麻豆| 亚洲成人第一页| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产成人在线视频网站| 精品一区二区久久| 99久久99久久综合| 91麻豆免费视频| 亚洲精品在线三区| 久久免费视频色| 亚洲综合成人在线视频| 国产白丝精品91爽爽久久| 91视频你懂的| 久久久久久综合| 日韩精品一二三四| 色欧美片视频在线观看 | 亚洲午夜av在线| 青青草精品视频| 日本高清不卡一区| 国产精品视频你懂的| 激情文学综合网| 欧美写真视频网站| 亚洲免费毛片网站| 高清视频一区二区| 一区二区三区欧美亚洲| 成人av动漫在线| 国产精品高清亚洲| 日本高清不卡aⅴ免费网站| 中文字幕在线视频一区| 成人h版在线观看| 一区二区三区在线视频免费| 欧美日韩国产一级片| 久久精品99久久久| 久久精品男人天堂av| 色老汉av一区二区三区| 午夜视频一区二区| 国产日产欧美一区| 91美女在线观看| 黄色成人免费在线| 日韩美女视频一区二区| 日韩女同互慰一区二区| 成人网男人的天堂| 美国av一区二区| 亚洲三级在线看| 7777精品久久久大香线蕉 | 久久国产免费看| 亚洲自拍偷拍网站| 国产性做久久久久久| 51精品国自产在线| 日本电影欧美片| 成人听书哪个软件好| 久久精品国产久精国产爱| 亚洲影视在线观看| 最新不卡av在线| 国产偷国产偷精品高清尤物| 日韩欧美一区二区免费| 色婷婷综合在线| 91亚洲精品乱码久久久久久蜜桃| 久久精品99国产精品| 欧美a级一区二区| 麻豆精品在线观看| 美女脱光内衣内裤视频久久影院| 亚洲国产成人av好男人在线观看| 日韩毛片在线免费观看| 中文字幕一区二区三区色视频| 久久久亚洲午夜电影| 国产性做久久久久久| 国产欧美日本一区二区三区| 久久九九国产精品| 欧美激情在线免费观看| 久久精品夜色噜噜亚洲a∨| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品嫩草影院av蜜臀| 国产精品久久久久久亚洲伦| 亚洲啪啪综合av一区二区三区| 亚洲女厕所小便bbb| 日韩专区中文字幕一区二区| 麻豆精品久久久| aaa亚洲精品| 日韩欧美一区在线| 国产精品美女www爽爽爽| 亚洲va国产天堂va久久en| 国产在线播放一区二区三区| 99久久婷婷国产综合精品| 91精品国产综合久久精品性色| 精品国产自在久精品国产| 亚洲欧美日韩久久| 国产在线播放一区二区三区| 欧美性猛片xxxx免费看久爱| 国产校园另类小说区| 亚洲国产日韩一区二区| 成人av网址在线| 久久午夜羞羞影院免费观看| 亚洲成a人在线观看| av激情综合网| 中文字幕成人av| 国产成人在线影院 | 欧美一区二区成人| 亚洲视频在线一区| 成人国产精品免费观看视频| 日韩欧美一区二区免费| 亚洲午夜免费电影| 日本韩国欧美在线| 亚洲啪啪综合av一区二区三区| 成人一级片网址| 亚洲少妇最新在线视频| 成人国产精品免费观看| 国产精品动漫网站| 一本在线高清不卡dvd| 精品国产免费视频| 国产一本一道久久香蕉| 国产视频一区不卡| 一本色道久久综合亚洲91| 亚洲精品水蜜桃| 91电影在线观看| 日韩欧美一区二区三区在线| 国产精品 欧美精品| 欧美一区二区三区电影| 三级影片在线观看欧美日韩一区二区| 成人激情免费电影网址| 国产日韩在线不卡| 国精品**一区二区三区在线蜜桃| 日韩欧美在线观看一区二区三区| 亚洲国产精品精华液网站| 裸体一区二区三区| 欧美色男人天堂| 亚洲国产精品久久久久秋霞影院 | 久久国产精品99精品国产 | 成人aa视频在线观看| 国产一区二三区好的| 亚洲黄色片在线观看| 91色视频在线| 亚洲精品免费电影| 成人a级免费电影| 国产欧美日韩精品在线| 国产在线精品一区二区三区不卡| 国产日韩高清在线| 国产精品久久看| 久久精品无码一区二区三区| 国模娜娜一区二区三区| 欧美精品一区二区蜜臀亚洲| 亚洲综合精品久久| 日韩精品一区二区三区四区视频| 91福利在线观看| 成人av网站在线观看免费| 国产成人午夜精品5599| 中文字幕日本不卡| 日韩一级成人av| 7799精品视频|