vc資料庫編程
⑴ VC 資料庫編程三部教學電子書txt全集下載
VC 資料庫編程三部教學 txt全集小說附件已上傳到網路網盤,點擊免費下載:
⑵ vc資料庫編程里的時間如何獲取
數據類型轉換
3.1 異構數據源數據類型概述
對不同資料庫系統,每個DBMS都定義了一套自己的數據類型,但不論數據類型在各個系統中如何變化,其功能都滿足用戶的數據處理基本要求,如數值型,包括整型、實型、浮點型、雙精度型等;字元型,包括定長、變長等;日期型,包括年、月、日和小時、分、秒等;長字元型,包括文本類型,還有錢幣型等。隨著資料庫系統的不斷發展和版本的不斷升級,數據類型的種類也不斷增多,如超文本和二進制處理多媒體和大文本的數據類型。這些帶有共性的東西,給系統間的數據轉換帶來了可能和方便,但不同的資料庫的數據類型也是有差異的。其自身定義和擴充之間的區別,也給系統間的數據轉換帶來了許多困難。例如,DBMS返回的日期和時間數據格式在各個DBMS中有很大的不同。有些系統以8位元組整數格式返回日期和時間,另外一些以浮點數格式返回。並且有的DBMS含有LONG類型,其它DBMS無此類型。所以異種資料庫數據類型轉換的關鍵是找出其中的對應關系。
3.2 數據類型轉換方法一(設計類型映射表)
為了實現相互數據轉換,必須設計多個相應的雙向數據轉換程序並且解決不同的數據類型匹配問題。當增加一個資料庫系統時,相應要解決該資料庫系統與已存在的多個異構庫的數據類型匹配問題,並增加多個對應轉換程序。為了實現程序的擴展性,可以通過設計類型映射表來解決類型轉換問題。
將不同資料庫系統數據類型的對應關系和相應的數據轉換處理程序分離開,使數據轉換程序相對獨立,而把類型轉換關系在專門的表結構中存儲。通過對不同資料庫系統之間的數據類型進行詳細而深入的分析,找出了不同資料庫系統不同版本的各個不同類型之間預設的類型對應關系及可能存在的對應關系,將這些數據預先存入類型映射表中。
3.3 數據類型轉換方法二(利用ODBC SQL類型)
存儲在數據源中的數據都有一個數據類型,稱為數據源數據類型或SQL數據類型。SQL數據類型是按照SQL-92標准由每一個DBMS定義,可以是某個數據源特有的。驅動程序在ODBC SQL語法及驅動程序數據類型中也定義了一套數據類型稱為ODBC SQL數據類型(以SQL前綴開頭的數據類型)。每個驅動程序負責映射特定數據來源的SQL數據類型到ODBC SQL數據類型標識符。因此,不同的數據源在進行數據轉換的過程中可以通過ODBC SQL數據類型標識符作為基準來得到數據類型的預設映射關系。驅動程序通過函數SQLGetTypelnfo返回數據源的SQL數據類型和ODBC SQL數據類型的映射關系,在函數SQLCo1Attributes,SQLDescribeCol和 SQLDescribeParm中,驅動程序還用ODBC SQL數據類型來描述列和參數的數據類型。
此外,ODBC還提供一套以SQL_C前綴開頭的ODBC C數據類型。ODBC C數據類型指出了在應用程序中用於存儲數據的C緩沖區的數據類型。所有驅動程序必須支持所有的C數據類型,而且支持所有C類型到相應的SQL類型的轉換,並且所有的驅動程序至少支持字元SQL類型,使得DBMS的數據類型都能映射到一種C語言的數據類型,這樣在傳遞過程中不會改變數據。每一個SQL數據類型與一個ODBC C數據類型相適應。在從數據源返回數據之前,驅動程序將它轉換到指定的C數據類型。在發送數據到數據來源之前,驅動程序將它從指定C數據類型轉換到SQL數據類型。
4 數據轉換過程中大對象的處理
4.1 大對象類型概述
大對象類型BLOB全稱為Binary Large Objects,即二進制大對象。可以把BLOB區別為三種形式:聲像數據、二進制數據和大文本數據。因此,最常見的應用就是存儲圖形、聲音等對象,此外大二進制對象、OLE對象也可以通過BLOB類型存入資料庫,如果文本對象過大,超出了文本類型的規定長度,則必須用BLOB欄位進行存儲。我們在經常使用的編程環境中並不能直接支持BLOB欄位,因此需要調用相應的函數完成BLOB的使用。
不同的資料庫系統對大對象類型的支持不同,常用資料庫系統支持的大對象數據類型如表4所示:表4資料庫系統支持的大對象數據類型
資料庫系統 大對象類型
SQL SERVER "sql_variant","ntext","image","varbinary","binary","text"
ORACLE "BLOB","LONG RAW","BFILE","RAW","CLOB","LONG"
SYBASE "LONG VARCHAR"
VFP "MEMO"
ACCESS "OLE OBJECT","MEMO"
KINGBASE "blob","text","bytea","varbinary","binary","text"4.2 大對象的存取方法
1)利用MFC提供的CLongBinary類
VC存取大對象數據有眾多方法,如OLE、ActiveX等,而VC的MFC提供的CLongBinary類可以方便地實現存取BLOB欄位。使用CLongBinary類可以存取超過MAXINT數目的數據,最大為可以得到的內存容量。但數據完全保存在內存中,對超大量數據消耗太大。
2)利用ODBC的SQLGetData和SQLPutData函數
對於不能存儲在單一緩沖區中的數據,在行中的其他數據已被獲取之後,可以直接用SQLGetData分批從驅動程序檢索這些數據。為了從一列檢索長數據,應用程序首先調用SQLFetchScroll或SQLFetch移動一行,並且調用SQLGetData獲取綁定列的數據。
⑶ 請推薦個VC++編寫資料庫方面的書
人人軟體站里有(原 學生大軟體站): <<VC 資料庫編程三部教學>>
http://www.softii.com/downinfo/19336.html, 鏈接無效的話,你打開 www.softii.com 在里頭找 "VC 資料庫編程三部教學", 這是 WORD 文檔
講的很詳細,編程講的比較細,資料庫的配置就講的不多了,不過 SQL Server 2005 的配置本身就很容易上手
用 MFC 編比較方便, 如果你用 WIN32 API 編寫, 單單用戶界面那一塊就夠你折騰了
⑷ 誰有VC++資料庫編程視頻教程
請看孫鑫的教程 網路搜 VC孫鑫
⑸ VC++資料庫編程
*****
*****首先,告訴你正確寫法是:vSQL=
"insert into CARDINF (FD_ID, FD_NAME, FD_SEX, FD_DUTY, FD_BEGINDATE, FD_ENDDATE, FD_PLACE, FD_CID) values (1234, 'FD_NAME', 'FD_SEX', 'FD_DUTY', 'FD_BEGINDATE', 'FD_ENDDATE', 'FD_PLACE', 20080409)";
*****
*****你要是想使用變數作為欄位值,那你必須用參數化的版sql語句。否則必須用常量,權針對數字欄位直接用整數或小數常量,針對字元串或時間欄位必須用''括起來的字元串常量。
*****
*****另外,你用「+」號的初衷,想必是打算在編程環境裡面把一個很長的sql語句分多行顯示,你可以在行末用一個「/」號來實現。
⑹ VC與資料庫連好後,怎樣用C++編程將txt導入到SQL表中!源程序!!
呵呵,前幾天也遇到這個問題了。
一開始我是這樣做的:
(1)定義兩個變數
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
(2)在mfc的按鈕中的代碼
m_pRecordset.CreateInstance(__uuidof(Recordset));
CString sql;
sql.Format("bulk insert Data from 'D:\\a.txt' with(fieldterminator = ',', rowterminator = '\n')");
m_pRecordset->Open(_variant_t(sql),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
以上兩步就可以將D:\\a.txt這個文本文件導入資料庫的Data表中,但是這樣做出現了一個問題:
導入的數據你查詢時沒有顯示錯誤,但是當你把數據導出的時候就發現問題了。(你可以將你查詢的結果導出為csv文件試試看)
今天終於解決了這個問題,就是將rowterminator = '\n'的換行符寫成'\r\n',也就是rowterminator = '\r\n',這樣就解決問題了。
因為windows下的文本就是以\r\n結束的。
(以上省去了資料庫的連接)
⑺ 請問用VC++連接SQL資料庫的過程中,在VC++的編程里都需要做哪些工作
新手吧你?
資料庫無外乎3個基本的
1.資料庫類(相當於對應哪個資料庫文件)
2.數據記錄集(相當於資料庫裡面的單個表)
3.錯誤異常.
你必須用資料庫類打開一個資料庫連接, 這些鏈接可以使ADO ODBC 文件 OLE
然後再打開單個表, 然後用記錄集的函數訪問每個表的行數據. 然後去每行對應的列數據.
⑻ VC++編程,怎麼讓資料庫表格顯示在界面上
用一個復data control控制項連接資料庫,然制後綁定一個datagrid控制項顯示數據。加控制項的話用右鍵,選擇添加activex控制項,data control的可以用ado data control,它有3種方式連接資料庫,你選定了控制項再了解吧。這里用ODBC源,可以在運行里輸入odbcad32進入管理界面,建一個個人文件。用控制項的話,其實跟連接資料庫的方式關系不大了。不用控制項的話,你可以用odbc的代碼手工連接資料庫,然後把數據取出來之後,隨意用datalist就可以顯示了,比較麻煩,也不會效果更好。
⑼ vc++ ADO資料庫編程如何實現查詢功能
ADO--------詳請情自行網路VC ADO ACCESS。。
變數:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
_CommandPtr m_pCommand;
初始化:
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pConnection;
鏈接資料庫:
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\\data.mdb","","",adConnectUnspecified );
如果要查詢:
構造SQL語句:
m_pCommand->CommandText = "SELECT * FROM 一個表 WHERE 要查詢欄位=網路;";
執行上述SQL語句:
m_pRecordset = m_pCommand->Execute(NULL, NULL,adCmdText);
結果將存於m_pRecordset中,然後用m_pRecordset->MoveFirst()和m_pRecordset->MoveNext()來定位查詢結果,m_pRecordset->GetCollect()來獲取相應的列。
==================================================
其實我也不是很明白。。。但是這樣總歸是可以的:
SELECT * FROM 表1 WHERE 欄位1=要查詢的內容 OR 欄位2=要查詢的內容 OR 欄位3=要查詢的內容;
如果是需要查找包含某詞的內容的話,應該是: WHERE 欄位1=*某詞*
星號表示通配符。
⑽ 幾種VC++資料庫開發技術的比較
從功能簡單的資料庫(如Jet Engine)到復雜的大型資料庫系統(如oracle),VC++6.0都提供了一些編程介面。本文主要介紹以下五種: 1.ODBC API; 2.MFC ODBC類; 3.MFC DAO類;(數據訪問對象) 4.MFC的OLE/DB; 5.ActiveX數據對象(ADO)。 1.開放資料庫連接(ODBC API):提供了一個通用的編程介面,允許程序與多種不同的資料庫連接。它為Oracle,SQL Server,MS Excel等都提供了驅動程序,使得用戶可以使用SQL語句對資料庫進行直接的底層功能操作。在使用ODBC API時,用戶須引入的頭文件為"sql.h","sqlext.h","sqltypes.h"。用ODBC API創建資料庫應用程序遵循一定的基本步驟: 第一步是分配ODBC環境,使一些內部結構初始化。完成這一步,須分配一個SQLHENV類型的變數在ODBC環境中做句柄使用。 第二步是為將要使用的每一個數據源分配一個連接句柄,由函數SQLALLocHandle()完成。 第三步是使用SQLConnect()把連接句柄與資料庫連接,可以先通過SQLSetConnectAttr()設置連接屬性。 然後就可以進行SQL語句的操作,限於篇幅,相關的函數就不具體介紹了,讀者可以參考相關書籍。 操作完成後,用戶取回相應的結果,就可以取消與資料庫的連接。 最後需要釋放ODBC環境。 ODBC API的特點是功能強大豐富,提供了非同步操作,事務處理等高級功能,但相應的編程復雜,工作量大。 2.MFC ODBC類:MFC1.5後的版本里引入封裝了ODBC功能的類。通過這些類提供與ODBC的介面,使得用戶可以不須處理ODBC API中的繁雜處理就可以進行資料庫操作。主要的MFC ODBC類如下。 CDatabase類:一個CDatabase對象表示一個到數據源的連接,通過它可以操作數據源。應用程序可使用多個CDatabase對象:構造一個對象並調用OpenEx()成員函數打開一個連接。接著構造CRecordSet對象以操作連接的數據源,並向CDatabase對象傳遞記錄集構造程序指針。完成使用後用Close()成員函數銷毀CDatabase對象。一般情況下並不需要直接使用CDatabase對象,因為CRecordSet對象可以實現大多數的功能。但是在進行事務處理時,CDatabase就起到關鍵作用。事務(Transaction)指的是將一系列對數據源的更新放在一起,同時提交或一個也不提交,為的是確保多用戶對數據源同時操作時的數據正確性。 CRecordSet類:一個CRecordSet對象代表一個從數據源選擇的一組記錄的集合-記錄集。記錄集有兩種形式:snapshot和dynaset。前者表示數據的靜態視圖,後者表示記錄集與其他用戶對資料庫的更新保持同步。通過CRecordSet對象,用戶可以對資料庫中的記錄進行各種操作。 CRecordView類:CRecordView對象是在空間中顯示資料庫記錄的視圖。這種視圖是一種直接連到一個CRecordSet對象的格式視圖,它從一個對話框模板資源創建,並將CRecordSet對象的欄位顯示在對話框模板的控制項里。對象利用DDX和RFX機制,使格式上的控制項和記錄集的欄位之間數據移動自動化,也就是說,用戶甚至不要編寫一行代碼就可以實現簡單的資料庫記錄查看程序。 CDBException類:由Cexception類派生,以三個繼承的成員變數反映對資料庫操作時的異常: m_nRetCode:以ODBC返回代碼(SQL_RETURN)的形式表明造成異常的原因。 m_strError:字元串,描述造成拋出異常的錯誤原因。 m_strStateNativeOrigin:字元串,用以描述以ODBC錯誤代碼表示的異常錯誤。 MFC資料庫類成員函數都能拋出CDBException類型的異常,所以在代碼對資料庫進行操作後監測異常是正確做法。 MFC ODBC類在實際開發中應用最廣,因為它功能豐富,操作相對簡便。