freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

vc操作數(shù)據(jù)庫(kù)簡(jiǎn)介-文庫(kù)吧資料

2024-09-12 16:48本頁(yè)面
  

【正文】 以修改,要是可以修改,就返回非零值,要是數(shù)據(jù)源是只讀的,返回零值。 用來(lái)判斷當(dāng)前的對(duì)象是否連接著數(shù)據(jù)源,要是的話,返回值為非零值,沒有連接的時(shí)候,返回值為零值。 將返回當(dāng)前所連接的數(shù)據(jù)源的名字 ,這個(gè)名字并不一定是在 ODBC 控制臺(tái)登記的名字,這取決于不同的 ODBC驅(qū)動(dòng)。要是沒有生效,可以翻轉(zhuǎn)回原來(lái)的狀態(tài)重新執(zhí)行,或是翻回去后執(zhí)行其它的事務(wù)??赡茉谕瓿赡硞€(gè)處理動(dòng)作的時(shí)候,突然出現(xiàn)中斷,如斷電,那么數(shù)據(jù)是否算修改了呢?所以數(shù)據(jù)庫(kù)中定義了一種事件,稱為事務(wù),就是一個(gè)處理動(dòng)作。所謂事務(wù) 就是數(shù)據(jù)庫(kù)中一個(gè)數(shù)據(jù)處理過(guò)程。 10. CDatabase::Rollback BOOL Rollback( )。 GetConnect( ) const。 用來(lái)設(shè)置連接時(shí)間,參數(shù) dwSeconds是連接時(shí)間,單位為秒,要是超時(shí),就算失敗。要是支持,返回值為非零值,否則為零值。 7. CDatabase::CanTransact BOOL CanTransact( ) const。 參數(shù) lpszSQL 是一個(gè)指向一句合法的 SQL 語(yǔ)句的字符指針。 6. CDatabase::ExecuteSQL void ExecuteSQL( LPCSTR lpszSQL )。 關(guān)閉一個(gè) CDatabase關(guān)聯(lián)的數(shù)據(jù)源時(shí),要調(diào)用函數(shù) Close。推薦使用 OpenEx 函數(shù)來(lái)打開一個(gè)數(shù)據(jù)源。它可以是下面幾種方式的組合: DwOptions 說(shuō)明 CDatabase::openExclusive 現(xiàn)在的 VC版本不支持 CDatabase::openReadOnly 以只讀的方式讀出 CDatabase::useCursorLib 加載 ODBC Cursor Library DLL CDatabase::noOdbcDialog 不出現(xiàn) ODBC 連接對(duì)話框 CDatabase::forceOdbcDialog 總要出現(xiàn) ODBC 連接對(duì)話框 如果參數(shù) lpszConnectString的信息不夠完全,系統(tǒng)會(huì)從 ODBC對(duì)話框來(lái)得到相應(yīng)的信息。PWD=abc123。例如:DSN=SQLServer_Source。 這個(gè)函數(shù)的參數(shù)說(shuō)明如下: ? lpszConnectString:用來(lái)描述一個(gè) ODBC連接,是一個(gè)字符串。 4. CDatabase::OpenEx virtual BOOL OpenEx( LPCTSTR lpszConnectString, DWORD dwOptions = 0 ); throw( CDBException, CMemoryException ); 如果一個(gè)連接成功的話,就會(huì)返回一個(gè)非零值。 調(diào)用這個(gè)函數(shù)就是為了初始化一個(gè) CDatabase 對(duì)象。 ? bUseCursorLib:為真時(shí),加載 ODBC的 Cursor Library DLL文件。 ? bReadOnly:為真時(shí), 數(shù)據(jù)源將以只讀的方式讀出,否則就是可以修改數(shù)據(jù)源的。 它的參數(shù)說(shuō)明如下: ? lpszDSN:用來(lái)設(shè)定一個(gè)數(shù)據(jù)源的名字,這個(gè)名字必須是在 ODBC的控制臺(tái)中登記的,如果在參數(shù) lpszConnect 已經(jīng)有了一個(gè) DSN值的話,這個(gè)參數(shù)可以設(shè)為 NULL。調(diào)用成功的話,會(huì)返回非零值,否則返回零值,并且會(huì)彈出一個(gè)出錯(cuò)信息對(duì)話框,按下 Cancel 鍵來(lái)取消連接。 throw( CDBException, CMemoryException )。 3. CDatabase::Open virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC。 2. CDatabase::CDatabase CDatabase( )。通常不需用戶要直接操作這個(gè)變量。連接數(shù)據(jù)源結(jié)束時(shí),必須用 Close函數(shù)關(guān)閉這個(gè)對(duì)象。 為了可以使用 CDatabase 對(duì)象,需要調(diào)用構(gòu)造函數(shù),并調(diào)用 OpenEx或是 Open 函數(shù) ,這將會(huì)打開一個(gè)連接。, and xBASE。例如: Microsoft SQL Server, Microsoft Access, Borland174。通過(guò)這個(gè)類的對(duì)象你可以操縱數(shù)據(jù)源。 CDatabase類 這個(gè)類的頭文件是 。 這個(gè)頭文件主要是定義了記錄集中的數(shù)據(jù)成員變量。 dc) const。 // RFX support //}}AFX_VIRTUAL // Implementation ifdef _DEBUG virtual void AssertValid() const。 // Default connection string virtual CString GetDefaultSQL()。 BOOL m_contract。 CString m_state。 CString m_address。 CString m_au_fname。 DECLARE_DYNAMIC(CDBViewSet) // Field/Param Data //{{AFX_FIELD(CDBViewSet, CRecordset) CString m_au_id。 RFX 機(jī)制將程序員從繁瑣的下層編程中解脫出來(lái),自動(dòng)完成大部分的數(shù)據(jù)交換工作。 RFX_Bool(pFX, _T([contract]), m_contract)。 RFX_Text(pFX, _T([state]), m_state)。 RFX_Text(pFX, _T([address]), m_address)。 RFX_Text(pFX, _T([au_fname]), m_au_fname)。 RFX_Text(pFX, _T([au_id]), m_au_id)。 有些時(shí)候用戶需要自己加入一些 RFX代碼,如: ? 使用帶參數(shù)的查詢。用 ClassWizard派生一個(gè)記錄集類的對(duì)象,還可以加入其它父類。如果使用 AppWizared或是 ClassWizard來(lái)生成一個(gè)記錄集, RFX 機(jī)制就自動(dòng)加入應(yīng)用程序框架中去了。 RFX 機(jī)制能夠安全的通過(guò)調(diào)用 (例如 ODBC 函數(shù) SQLBindCol)來(lái)保存用戶的工作。 RFX 和對(duì)話框的數(shù)據(jù)交換 (DDX)類似。當(dāng)從CRecordset 類派生一個(gè)類,在交換數(shù)據(jù)的時(shí)候沒有選擇大容量交換的方式( Bulk RFX)時(shí),RFX機(jī)制將在數(shù)據(jù)交換中起作用。 1514 顯示數(shù)據(jù)庫(kù)數(shù)據(jù)的前臺(tái)程序 RFX Record Field Exchange (RFX)就是支持剛才那個(gè)應(yīng)用程序的一個(gè)交換機(jī)制,請(qǐng)讀者試著習(xí)慣使用英文縮寫來(lái)代替一些東西,這在計(jì)算機(jī)技術(shù)交流過(guò)程中是很有效的。要是讀者所裝的SQL Pubs數(shù)據(jù)庫(kù)中的數(shù)據(jù)是很重要的話,請(qǐng)備份一份,以免數(shù)據(jù)遭到破壞后,無(wú)法修復(fù)。 這樣讀者就已經(jīng)做成了一個(gè)自己的一個(gè)數(shù)據(jù)庫(kù)前端應(yīng)用程序。同時(shí)可以修改數(shù)據(jù),并且能夠反饋到數(shù)據(jù)庫(kù)中去。程序的運(yùn)行的界面就如圖 1514所示,讀者可以按一下工具欄上的按鈕,看一看程序顯示的是不是數(shù)據(jù)庫(kù)中的數(shù)據(jù)。 1512 對(duì)話框的設(shè)置 ? 用 ClassWizard來(lái)給相應(yīng)的 Edit Box來(lái)連接變量,注 意,在 Member variable name的下拉組合框中已經(jīng)有了相應(yīng)表中的字段 (如圖 1513 所示 ),只要選中就行了,請(qǐng)讀者按照上圖的說(shuō)明選擇好相應(yīng)的字段。 1510 SQL登陸對(duì)話框 ? 選擇數(shù)據(jù)庫(kù)中的 (如圖 1511 所示)。出現(xiàn)如圖 159的對(duì)話框,在 ODBC一項(xiàng)中選擇 LocalServer,然后按下 OK鍵。 下面舉例實(shí)現(xiàn)一個(gè)小小的數(shù) 據(jù)庫(kù)顯示程序: ? 在 File菜單中選擇 New命令,用 AppWizard來(lái)生成一個(gè)單文檔的 EXE工程,名字叫 DBView, ? 然后選中視圖文檔支持,然后在 AppWizard的第二步中選擇數(shù)據(jù)支持的時(shí)候選擇“ Database view without file support”,就如圖 158所示一樣。 需要小心的是如果記錄集中沒有記錄,調(diào)用 OnMove函數(shù)會(huì)產(chǎn)生一個(gè)異常。視圖將一直顯示最后一個(gè)記錄的數(shù)據(jù)。如果用戶選擇可以浮動(dòng)的工具條的選項(xiàng)的時(shí)候,AppWizard同樣也會(huì)相應(yīng)的生成對(duì)應(yīng)的按鈕來(lái)對(duì)應(yīng)相應(yīng)的數(shù)據(jù)庫(kù)移動(dòng)命令。 對(duì)于 OnMove函數(shù)缺省的設(shè)置為:當(dāng)用戶在視圖中修改數(shù)據(jù)后, OnMove將用戶的修改反映到數(shù)據(jù)源中去,進(jìn)行數(shù)據(jù)源的修改。 函數(shù)參數(shù) nIDMoveCommand是下面的幾個(gè)特定的值: ID_RECORD_FIRST 移動(dòng)到記錄集的第一個(gè)記錄 ID_RECORD_LAST 移動(dòng)到記錄集的最后一個(gè)記錄 ID_RECORD_NEXT 在記錄集中向后移動(dòng)一個(gè)記錄 ID_RECORD_PREV 在記錄集中向前移動(dòng)一個(gè)記錄 調(diào)用這個(gè)成員函數(shù)是為了在記錄集中移動(dòng)游標(biāo)的位置,并且將記錄顯示在視圖中的控件里面。 這樣的使用的目的是為了在函數(shù)調(diào)用失敗后給出一個(gè)出錯(cuò)信息。 5. CRecordView::OnMove 這是一個(gè)虛函數(shù),它的使用一般是下面的樣子: OnMove( UINT nIDMoveCommand )。必須重載這個(gè)函數(shù),以便能夠構(gòu)造 CRecordset 的派生類或是得到一個(gè)其派生類的一個(gè)指針。否則就是一個(gè)空的指針。IsOnLastRecord函數(shù)在調(diào)用了函數(shù) OnRecordLast后,或是 CRecordset::MoveLast函數(shù)被調(diào)用后,返回值將是不可靠的值。所以要注意在移動(dòng)到接近記錄集結(jié)束地方的時(shí)候,要小心的檢測(cè)。可以在函數(shù)體中更新語(yǔ)句,自己處理在記錄集中移動(dòng)游標(biāo)的功能。 調(diào)用這個(gè)函數(shù)就是為了判斷當(dāng)前的記錄是否是記錄集中最后的記錄。這個(gè)函數(shù)非常有用,可以在這個(gè)函數(shù)里面寫上自己的缺省的更新語(yǔ)句。 例子: CMyRecordView::CMyRecordView() : CRecordView( IDD_MYFORM ) { //{{AFX_DATA_INIT( CMyRecordView ) // ClassWizard在這里調(diào)用父類的構(gòu)造函數(shù) //}}AFX_DATA_INIT //自己子類的初始化工作 } 2. CRecordView::IsOnFirstRecord BOOL IsOnFirstRecord( ); 這個(gè)成員函數(shù)返回一個(gè)布爾值,當(dāng)現(xiàn)在指向記錄是記錄集中的第一個(gè)記錄,那就返回一個(gè)非零的值,否則就返回一個(gè) 0值。然后和 CRecordView 子類關(guān)聯(lián)的對(duì)話框模板上的控件的變量將會(huì)和相應(yīng)的記錄集的數(shù)據(jù)關(guān)聯(lián)起來(lái)。在子類構(gòu)造函數(shù)里面,要有調(diào)用到父類中的構(gòu)造函數(shù) CRecordView::CRecordView的語(yǔ)句,就如下面的例子一樣。作者推薦使用 ID號(hào)來(lái)傳遞對(duì)話框模板信息。 下面我來(lái)介紹 CRecordView的成員函數(shù): 1. CRecordView::CRecordView CRecordView( LPCSTR lpszTemplateName ); CRecordView( UINT nIDTemplate ); 這些是 CRecordView 的構(gòu)造函數(shù),是個(gè)重載函數(shù),有兩個(gè)版本,一個(gè)版本的參數(shù)是LPCSTR lpszTemplateName,是指向一個(gè)對(duì)話框模板資源的名字的字符串;另外的一個(gè)版本的參數(shù)是 nIDTemplate,是一個(gè)對(duì)話框模板資源的 ID號(hào)。讓用戶方便的在記錄集中移動(dòng)游標(biāo)。使用 ClassWizard 生成一個(gè)數(shù)據(jù)庫(kù)的視圖類( CRecordView)和一個(gè)數(shù)據(jù)庫(kù)的記錄集 的類( CRecordset),將會(huì)在處理數(shù)據(jù)源的時(shí)候有更多的靈活性,可以對(duì)于同一個(gè)記錄集,用多個(gè)視圖來(lái)顯示。如果只是需要一個(gè)簡(jiǎn)單的顯示,那用 AppWizard來(lái)生成一個(gè)數(shù)據(jù)庫(kù)視圖是最好的。 AppWizard 不但生成相應(yīng)于記錄集的視圖類 CRecordView,還生成相應(yīng)的記錄集類 CRecordset,將它和相應(yīng)的數(shù)據(jù)源關(guān)聯(lián),并將它放入到應(yīng)用程序的框架中去。同樣的 CRecordView 類支持缺省的游標(biāo) (游指向當(dāng)前記錄的指針 )功能,能夠跳到記錄集頭,跳到記錄集末,或是記錄尾,或是向前移動(dòng)一個(gè),向后移動(dòng)一個(gè);同樣的,還留有一個(gè)接口用來(lái)更新數(shù)據(jù)源的數(shù)據(jù)。這個(gè)視圖是由對(duì)話框模板生成的。一個(gè) CrecordView對(duì)象就是用一個(gè)視圖中的控件來(lái)顯示數(shù)據(jù)庫(kù)中的記錄。 MFC中的 ODBC 下面將介紹 MFC中的四個(gè)類和一個(gè) RFX機(jī)制,并且將介紹一個(gè)最簡(jiǎn)單的數(shù)據(jù)庫(kù)顯示程序。一般的情況下,是可以定制RecordSet 的對(duì)象的 SQL 的語(yǔ)句的,已經(jīng)得到的特定記錄集,或者,也可以使用 Cdatabase的 ExcuteSQL函數(shù)直接執(zhí)行 SQL語(yǔ)句。 MFC ODBC類提供了同樣的靈活性,允許直接調(diào)用 ODBC API函數(shù),可以在程序中的任何地方調(diào)用這些函數(shù)。 SQL和 ODBC API 作者在這里并不是下結(jié)論說(shuō) SQL語(yǔ)句好還是 ODBC API好,因?yàn)檫@完全取決編程人員的喜好以及任務(wù)的需要,但是 SQL語(yǔ)句還是應(yīng)該知道的。相應(yīng)的, recordset對(duì)象數(shù)據(jù)成員是使用 RFX(記錄域交換)和數(shù)據(jù)源中的表中的數(shù)據(jù)進(jìn)行交換。當(dāng)然這樣的話,在編程調(diào)試的時(shí)候?qū)⑤^為麻煩一些。 有的時(shí)候需要多個(gè)視圖顯示一個(gè)數(shù)據(jù)源
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1