范文為教學中作為模范的文章,,也常常用來指寫作的模板。常常用于文秘寫作的參考,,也可以作為演講材料編寫前的參考,。相信許多人會覺得范文很難寫?下面我給大家整理了一些優(yōu)秀范文,,希望能夠幫助到大家,,我們一起來看一看吧。
數據庫工程師求職篇一
您好!我叫劉欣,,感謝您在百忙之中查看我的資料,。我是新華學校的一名好范文,在校期間,我勤奮努力學習,,成績優(yōu)異,,多次獲學校學金,掌握了windows,、c語言,、pasca、,數據結構,、數據庫原理等專業(yè)基礎知識,。同時,通過大量的實際操作,,我熟練掌握了dos,windows操作系統,,并對unix有一定的了解,能夠獨立word,、excel,、photoshop等應用等軟件,有一定的語言編程基礎,,在經濟信息及計算機應用專業(yè)通過三年的學習,,我已具備了扎實的專業(yè)基礎知識功底。
作為一名的學生,,我認識到互聯網將在未來經濟中發(fā)揮巨大的作用,,所以,業(yè)余時間我刻苦自學了很多網絡知識,。首先,,在internet基礎應用方面,比如瀏覽網頁,,搜索引擎的使用,,網上查找,下載所需信息等都很熟練,。而且,,我還不滿足于此,進一步學習了html語言,,和,,frontpage,dreamweaver等網頁編輯軟件,,firework,,flash等網頁圖形處理軟件,可以自如的進行網頁編輯?,F在我在互聯網上,,就已經建立了自己的個人主頁,,并用文件傳輸協議(ftp)進行維護和。不斷的努力使我的網站日趨成熟,。
當然一個高素質除了掌握扎實的專業(yè)知識,,還應該具有豐富的人文知識。我從小熱愛文學,,廣覽群書,,為我的寫作能力奠定了堅實的基礎。讀書以來,,不斷參加校內外征文活動,,發(fā)表過作品數篇。特別在大學期間,被特邀為校報記者,參賽文章多次獲得校園文學獎,。.此外,在英語的學習方面,我已具備了一定的聽,說,寫和會話能力,可以用英語進行日常的交流,。
未來社會需要的是理論和實踐相結合的復合型。學習之余,,我參加了大量的社會實踐活動,,做家教,去商場做過促銷員,,從而鍛煉了自己吃苦耐勞,一絲不茍的工作做風.未來是一個充滿挑戰(zhàn)的世界,,鮮花和榮譽只能代表過去。年輕的我希望公司給我展示自我的機會,。沒有您伯樂的眼光,對我來講那是一種遺憾,。因此,,我非常希望能夠成為貴公司的一員。我將以更大的熱情和勤奮上進的工作態(tài)度投入到新的工作環(huán)境中去,,為公司的發(fā)展添磚加瓦,。
愿公司的明天更美好!
此致
敬禮
數據庫工程師求職篇二
數據庫編程總結
當前各種主流數據庫有很多,包括oracle, ms sql server, sybase, informix, mysql, db2, interbase / firebird, postgresql, sqlite, sap/db, timesten, ms access等等,。數據庫編程是對數據庫的創(chuàng)建,、讀寫等一列的操作。數據庫編程分為數據庫客戶端編程與數據庫服務器端編程,。數據庫客戶端編程主要使用odbc api,、ado、,、oci,、otl等方法;數據庫服務端編程主要使用ole db等方法,。數據庫編程需要掌握一些訪問數據庫技術方法,,還需要注意怎么設計高效的數據庫,、數據庫管理與運行的優(yōu)化、數據庫語句的優(yōu)化,。
一,、訪問數據庫技術方法
數據庫編程分為數據庫客戶端編程與數據庫服務器端編程。數據庫客戶端編程主要使用odbc api,、ado,、、oci,、otl等方法,;數據庫服務端編程主要使用ole db等方法。
1,、幾種是數據庫訪問方法比較
odbc
api是一種適合數據庫底層開發(fā)的編程方法,odbc
api提供大量對數據源的操作,odbc
api能夠靈活地操作游標,支持各種幫定選項,在所有odbc相關編程中,api編程具有最高的執(zhí)行速度,。dao提供了很好的數據庫編程的對象模型.但是,對數據庫的所有調用以及輸出的數據都必須通過access/jet數據庫引擎,這對于使用數據庫應用程序,是嚴重的瓶頸。
ole
db提供了com接口,,與傳統的數據庫接口相比,,有更好的健壯性和靈活性,具有很強的錯誤處理能力,能夠同非關系數據源進行通信,。
ado最主要的優(yōu)點在于易于使用,、速度快、內存支出少和磁盤遺跡小,。
是利用數據集的概念將數據庫數據讀入內存中,,然后在內存中對數據進行操作,最后將數據集數據回寫到源數據庫中,。
otl 是 oracle, odbc and db2-cli template library 的縮寫,,是一個c++編譯中操控關系數據庫的模板庫,otl中直接操作oracle主要是通過oracle提供的oci接口進行,,進行操作db2數據庫則是通過cli接口來進行,,至于ms的數據庫和其它一些數據庫,則otl只提供了odbc來操作的方式,。當然oracle和db2也可以由otl間接使用odbc的方式來進行操縱,。具有以下優(yōu)點:跨平臺;運行效率高,,與c語言直接調用api相當,;開發(fā)效率高,使用起來更簡單,,更簡潔,;部署容易,不需要ado組件,, framework 等,。
2,、vc數據庫編程幾種方法
vc數據庫編程幾種方法,包括odbc連接,、mfc
odbc連接,、dao連接、ole
db,、ole
db
templates連接,、ado、oracle專用方法(oci(oracle
call
interface)訪問,、oracle
object
ole
c++
class
library),。
<1.>通用方法
連接
odbc(open
database
connectivity)是msoa的一部分,是一個標準數據庫接口。它提供對關系數據庫訪問的統一接口,實現對異構數據源的一致訪問,。odbc數據訪問由以下部分組成:
<1>句柄(handles):odbc使用句柄來標識odbc環(huán)境,、連接、語句和描述器.<2>緩存區(qū)(buffers):
<3>數據類型(data
types)
<4>一致性級別(conformance
levels)
用odbc設計客戶端的一般步驟:
<1>分配odbc環(huán)境
<2>分配連接句柄
<3>連接數據源
<4>構造和執(zhí)行sql語句
<5>獲得查詢結果
<6>斷開數據源的連接
<7>釋放odbc環(huán)境
odbc
api是一種適合數據庫底層開發(fā)的編程方法,odbc
api提供大量對數據源的操作,odbc
api能夠靈活地操作游標,支持各種幫定選項,在所有odbc相關編程中,api編程具有最高的執(zhí)行速度.因此,odbc
api編程屬于底層編程,。
odbc連接
mfc
odbc是mfc對odbc進行的封裝,以簡化對odbc
api的 調用,
odbc的封裝主要開發(fā)了cdatabase類和crecordset類
(1)cdatabase類
cdatabase類用于應用程序建立同數據源的連接,。cdatabase類中包含一個m_hdbc變量,它代表了數據源的連接句柄。如果要建立cdatabase類的實例,應先調用該類的構造函數,再調用open函數,通過調用,初始化環(huán)境變量,并執(zhí)行與數據源的連接,。在通過close函數關閉數據源,。
cdatabase類提供了對數據庫進行操作的函數及事務操作。
(2)crecordset類
crecordset類定義了從數據庫接收或者發(fā)送數據到數據庫的成員變量,以實現對數據集的數據操作,。
crecordset類的成員變量m_hstmt代表了定義該記錄集的sql語句句柄,m_nfields為記錄集中字段的個數,m_nparams為記錄集所使用的參數個數,。
crecordset的記錄集通過cdatabase實例的指針實現同數據源的連接,
odbc編程更適合于界面型數據庫應用程序的開發(fā),但由于cdatabase類和crecordset類提供的數據庫操作函數有限,支持的游標類型也有限,限制了高效的數據庫開發(fā)。在編程層次上屬于高級編程,。
應用實例: 1.打開數據庫
cdatabase database;
(_t(“dsn=zhuxue”),cdatabase::noodbcdialog);//zhuxue為數據源名稱
2.關聯記錄集
crecordset recset(&database);
3.查詢記錄
cstring ssql1=“";
ssql1 = ”select * from tablename“;
(crecordset::forwardonly, ssql1, crecordset::readonly);
int ti=0;
cdbvariant var;//var可以轉換為其他類型的值
while(!())
{
//讀取excel內部數值
ldvalue(”id“,var);
jiangxiang[ti].id=var.m_ival;
ldvalue(”name“, jiangxiang[ti].name);
ti++;
xt();
}
();//關閉記錄集
4.執(zhí)行sql語句
cstring ssql=”“;
ssql+=”delete * from 院系審核“;//清空表
esql(ssql);
ssql也可以為insert ,update等語句
5.讀取字段名
ssql = ”select * from sheet1“;
//讀取的文件有sheet1表的定義,或為本程序生成的表.// 執(zhí)行查詢語句
(crecordset::forwardonly, ssql, crecordset::readonly);
int excelcolcount=cfieldcount();//列數
cstring excelfield[30];
//得到記錄集的字段集合中的字段的總個數
for(i=0;i
{
codbcfieldinfo fieldinfo;
cfieldinfo(i,fieldinfo);
excelfield[i].name =fieldinfo.m_strname;//字段名
}
6.打開excel文件
cstring sdriver = ”microsoft excel driver(*.xls)“;// excel安裝驅動
cstring ssql,sexcelfile;//sexcelfile為excel的文件路徑
try
{
// 創(chuàng)建進行存取的字符串
(”driver={%s};dsn='';firstrowhasnames=1;readonly=false;create_db=/“%s/”;dbq=%s“,sdriver, sexcelfile, sexcelfile);
// 創(chuàng)建數據庫(既excel表格文件)
if((ssql,cdatabase::noodbcdialog))
{
//可以把excel作為一個數據庫操作
}
}
catch(e)
{
trace1(”excel驅動沒有安裝: %s“,sdriver);
afxmessagebox(”讀取失敗,請檢查是否定義數據區(qū)sheet1“);
}
連接
dao(data
access
object)是一組microsoft
access/直接與access/jet數據庫通信.通過jet數據庫引擎,dao也可以同其他數據庫進行通信,。dao還封裝了access數據庫的結構單元,通過dao可以直接修改access數據庫的結構,而不必使用sql的數據定義語言(ddl)。
dao的體系結構如下:
dao封裝的類:
(1)cdaoworkspace:對dao工作區(qū)(數據庫處理事務管理器)的封裝
(2)cdaodatabase:對dao數據庫對象的封裝,負責數據庫連接.(3)cdaorecordset:對dao記錄集對象的封裝,代表所選的一組記錄.(4)cdaotabledef:對表定義對象的封裝,代表基本表或附加表定義.(5)cdaoquerydef:對查詢對象的封裝,包含所有查詢的定義.(6)cdaoexception:dao用于接收數據庫操作異常的類.(7)cdaofieldexchange
dao提供了很好的數據庫編程的對象模型.但是,對數據庫的所有調用以及輸出的數據都必須通過access/jet數據庫引擎,這對于使用數據庫應用程序,是嚴重的瓶頸,。
dao相對于odbc來說,
db連接
ole
db對odbc進行了兩方面的擴展:一是提供了數據庫編程的ole接口即com,,二是提供了一個可用于關系型和非關系型數據源的接口,。
ole
db提供了com接口,與傳統的數據庫接口相比,,有更好的健壯性和靈活性,,具有很強的錯誤處理能力,能夠同非關系數據源進行通信。
與odbc
api一樣,ole
db也屬于底層的數據庫編程接口,ole
db結合了odbc對關系數據庫的操作功能,,并進行擴展,,可以訪問非關系數據庫。
ole
db訪問數據庫的原理如下:
ole
db程序結構:
ole
db由客戶(consumer)和服務器(provider),??蛻羰鞘褂脭祿膽贸绦?,它通過ole
db接口對數據提供者的數據進行訪問和控制。ole
db服務器是提供ole
db接口的軟件組件,。根據提供的內容可以分為數據提供程序(data
provider)和服務提供程序(service
provider),。
程序結構原理圖如下:
<1>數據提供程序
數據提供程序擁有自己的數據并把數據以表格的形式呈現給使用者使用.<2>服務提供程序
服務提供程序是數據提供程序和使用者的結合。它是ole
db體系結構中的中間件,它是ole
db數據源的使用者和數據使用程序的提供者
<3>數據使用程序
db開發(fā)程序的一般步驟:
<1>初始化com環(huán)境
<2>連接數據源
<3>打開對話
<4>執(zhí)行命令
<5>處理結果
<6>清除對象
應用實例:
使用oledb編寫數據庫應用程序 1
概述
ole db的存在為用戶提供了一種統一的方法來訪問所有不同種類的數據源,。ole db可以在不同的數據源中進行轉換,。利用ole db,客戶端的開發(fā)人員在進行數據訪問時只需把精力集中在很少的一些細節(jié)上,,而不必弄懂大量不同數據庫的訪問協議,。ole db是一套通過com接口訪問數據的activex接口。這個ole db接口相當通用,,足以提供一種訪問數據的統一手段,,而不管存儲數據所使用的方法如何。同時,,ole db還允許開發(fā)人員繼續(xù)利用基礎數據庫技術的優(yōu)點,,而不必為了利用這些優(yōu)點而把數據移出來。
使用atl使用ole db數據使用程序
由于直接使用ole db的對象和接口設計數據庫應用程序需要書寫大量的代碼,。為了簡化程序設計,,visual c++提供了atl模板用于設計ole db數據應用程序和數據提供程序。利用atl模板可以很容易地將ole db與mfc結合起來,,使數據庫的參數查詢等復雜的編程得到簡化,。mfc提供的數據庫類使ole db的編程更具有面向對象的特性。viual c++所提供用于ole db的atl模板可分為數據提供程序的模板和數據使用程序的模板,。
使用atl模板創(chuàng)建數據應用程序一般有以下幾步驟: 1),、創(chuàng)建應用框架
2)、加入atl產生的模板類
3),、在應用中使用產生的數據訪問對象3 不用atl使用ole db數據使用程序
利用atl模板產生數據使用程序較為簡單,,但適用性不廣,不能動態(tài)適應數據庫的變化,。下面我們介紹直接使用mfc ole db類來生成數據使用程序,。模板的使用
ole db數據使用者模板是由一些模板組成的,包括如下一些模板,,下面對一些常用類作一些介紹,。1)、會話類 cdatasource類
cdatasource類與ole db的數據源對象相對應,。這個類代表了ole db數據提供程序和數據源之間的連接,。只有當數據源的連接被建立之后,才能產生會話對象,,可以調用open來打開數據源的連接,。csession類
csession所創(chuàng)建的對象代表了一個單獨的數據庫訪問的會話,。一個用cdatasource類產生的數據源對象可以創(chuàng)建一個或者多個會話,要在數據源對象上產生一個會話對象,,需要調用函數open()來打開,。同時,會話對象還可用于創(chuàng)建事務操作,。
cenumeratoraccessor類
cenumeratoraccessor類是用來訪問枚舉器查詢后所產生的行集中可用數據提供程序的信息的訪問器,,可提供當前可用的數據提供程序和可見的訪問器。2),、訪問器類 cacessor類
caccessor類代表與訪問器的類型,。當用戶知道數據庫的類型和結構時,可以使用此類,。它支持對一個行集采用多個訪問器,,并且,存放數據的緩沖區(qū)是由用戶分配的,。cdynamicaccessor類
cdynamicaccessor類用來在程序運行時動態(tài)的創(chuàng)建訪問器,。當系統運行時,可以動態(tài)地從行集中獲得列的信息,,可根據此信息動態(tài)地創(chuàng)建訪問器,。cmanualaccessor類
cmanualaccessor類中以在程序運行時將列與變量綁定或者是將參數與變量捆定。3),、行集類 crowset類
crowset類封裝了行集對象和相應的接口,,并且提供了一些方法用于查詢、設置數據等,??梢杂胢ove()等函數進行記錄移動,用getdata()函數讀取數據,,用insert(),、delete()、setdata()來更新數據,。cbulkrowset類
cbulkrowset類用于在一次調用中取回多個行句柄或者對多個行進行操作,。carrayrowset類
carrayrowset類提供用數組下標進行數據訪問。4),、命令類 ctable類 ctable類用于對數據庫的簡單訪問,用數據源的名稱得到行集,,從而得到數據,。ccommand類
ccommand類用于支持命令的數據源??梢杂胦pen()函數來執(zhí)行sql命令,,也可以prepare()函數先對命令進行準備,,對于支持命令的數據源,可以提高程序的靈活性和健壯性,。
在stdafx.h頭文件里,,加入如下代碼。#include extern ccommodule _module;#include #include #include // if you are using schema templates 文件里,,加入如下代碼,。#include ccommodule _module;決定使用何種類型的存取程序和行集。獲取數據
在打開數據源,,會話,,行集對象后就可以獲取數據了。所獲取的數據類型取決于所用的存取程序,,可能需要綁定列,。按以下步驟。1,、用正確的命令打開行集對象,。
2、如果使用cmanualaccessor,,在使用之前與相應列進行綁定,。要綁定列,可以用函數getcolumninfo,如下所示: // get the column information ulong ulcolumns
= 0;dbcolumninfo* pcolumninfo = null;lpolestr pstrings
= null;if(umninfo(&ulcolumns, &pcolumninfo, &pstrings)!= s_ok)afxthrowoledbexception(rs.m_prowset, iid_icolumnsinfo);struct mybind* pbind = new mybind[ulcolumns];accessor(ulcolumns, &pbind[0], sizeof(mybind)*ulcolumns);for(ulong l=0;l
3,、用while循環(huán)來取數據,。在循環(huán)中,調用movenext來測試光標的返回值是否為s_ok,,如下所示: while(xt()== s_ok){
// add code to fetch data here
// if you are not using an auto accessor, call a()}
4,、在while循環(huán)內,可以通過不同的存取程序獲取數據,。1)如果使用的是caccessor類,,可以通過使用它們的數據成員進行直接訪問。如下所示:
2)如果使用的是cdynamicaccessor 或cdynamicparameteraccessor 類,,可以通過getvalue或getcolumn函數來獲取數據,。可以用gettype來獲取所用數據類型,。如下所示: while(xt()== s_ok){
// use the dynamic accessor functions to retrieve your
// data
ulong ulcolumns = umncount();
for(ulong i=0;i
{
ue(i);
} } 3)如果使用的是cmanualaccessor,可以指定自己的數據成員,,綁定它們。就可以直接存取,。如下所示: while(xt()== s_ok){
// use the data members you specified in the calls to
// tf(”%s“, szfoo);} 決定行集的數據類型
在運行時決定數據類型,,要用動態(tài)或手工的存取程序。如果用的是手工存取程序,可以用getcolumninfo函數得到行集的列信息,。從這里可以得到數據類型,。4
總結
由于現在有多種數據源,想要對這些數據進行訪問管理的唯一途徑就是通過一些同類機制來實現,,如ole db,。高級ole db結構分成兩部分:客戶和提供者??蛻羰褂糜商峁┱呱傻臄祿?。
就像其它基于com的多數結構一樣,ole db的開發(fā)人員需要實現很多的接口,,其中大部分是模板文件,。
當生成一個客戶對象時,可以通過atl對象向導指向一個數據源而創(chuàng)建一個簡單的客戶,。atl對象向導將會檢查數據源并創(chuàng)建數據庫的客戶端代理,。從那里,可以通過ole db客戶模板使用標準的瀏覽函數,。
當生成一個提供者時,,向導提供了一個很好的開端,它們僅僅是生成了一個簡單的提供者來列舉某一目錄下的文件,。然后,,提供者模板包含了ole db支持的完全補充內容。在這種支持下,,用戶可以創(chuàng)建ole db提供者,,來實現行集定位策略、數據的讀寫以及建立書簽,。應用案例:
visual c++中使用ole db讀寫sql server 在需要對數據庫進行操作時,,ole db總是被認為是一種效率最高但最難的方法。但是以我最近使用ole db的經驗看來,,ole db的效率高則高矣,,但卻一點都不難。說它難恐怕主要是因為可參考的中文資料太少,,為了幫助以后需要接觸ole db的同行,,我撰寫了這篇文章。本文包含如下內容:
db寫數據庫,; db讀數據庫,;
db對二進制數據(text、ntext,、image等)的處理,。
首先來看看對sql server進行寫操作的代碼,有一定vc基礎的讀者應該可以很順利地看懂。ole db寫數據庫,,就是這么簡單!
注:
1.以下代碼中使用的模板類eautoreleaseptr
與atl中的ccomptr
類似,,是一個在析構時自動調用release的類,。ccomptr
的代碼在atlbase.h中定義。
2.以下代碼均在unicode環(huán)境下編譯,,因為執(zhí)行的sql語句必須是unicode的,。設置工程為unicode的方法是:首先在project->settings->c/c++的屬性頁中的preprocessor中,刪除_mbcs寫入unicode,_unicode,。然后在link屬性頁中category中選擇output,,在entry-point symbol 中添加wwinmaincrtstartup。eautoreleaseptr
pidbinitialize;hresult hresult = connectdatabase(&pidbinitialize, _t(”127.0.0.1“), _t(“sa”), _t(”password“));if(failed(hresult)){
//失敗,,可能是因為數據庫沒有啟動,、用戶名密碼錯等等return;}eautoreleaseptr
piopenrowset;hresult = createsession(pidbinitialize, &piopenrowset);if(failed(hresult)){
//出錯return;}eautoreleaseptr
picommand;eautoreleaseptr
picommandtext;hresult = createcommand(piopenrowset, &picommand, &picommandtext);if(failed(hresult)){
//出錯return;}hresult = executesql(picommand, picommandtext, _t(”use pbdata“));if(failed(hresult)){
//如果這里失敗,那就是sql語句執(zhí)行失敗,。在此處,,就是pbdata還未創(chuàng)建
return;}
// 創(chuàng)建表 executesql(picommand, picommandtext, _t(”create table 2005_1(volume real not null,id int not null identity)“));
// 添加記錄
executesql(picommand, picommandtext, _t(”insert into 2005_1 values(100.0)“));//...其中幾個函數的代碼如下:
hresult connectdatabase(idbinitialize** ppidbinitialize, lpctstr pszdatasource, lpctstr pszuserid, lpctstr pszpassword){
assert(ppidbinitialize!= null && pszdatasource!= null && pszuserid!= null && pszpassword!= null);
uint utimeout = 15u;// 連接數據庫超時(秒)
tchar szinitstr[1024];
verify(1023 >= wsprintf(szinitstr, _t(”provider=sqloledb;data source=%s;initial catalog=master;user id=%s;password=%s;connect timeout=%u“), pszdatasource, pszuserid, pszpassword, utimeout));
//initial catalog=master指明連接成功后,”use master“,。
eautoreleaseptr
pidatainitialize;
hresult hresult = ::cocreateinstance(clsid_msdainitialize, null, clsctx_inproc_server,,iid_idatainitialize,(void**)&pidatainitialize);if(failed(hresult))
{
return hresult;
}
eautoreleaseptr
pidbinitialize;
hresult = pidatainitialize->getdatasource(null, clsctx_inproc_server,(lpcolestr)szinitstr,iid_idbinitialize,(iunknown**)&pidbinitialize);if(failed(hresult))
{
return hresult;
}
hresult = pidbinitialize->initialize();
if(failed(hresult))
{
return hresult;
}
* ppidbinitialize = ();
return s_ok;}
hresult createsession(idbinitialize* pidbinitialize, iopenrowset** ppiopenrowset){
assert(pidbinitialize!= null && ppiopenrowset!= null);
eautoreleaseptr
psession;
hresult hresult = pidbinitialize->queryinterface(iid_idbcreatesession,(void**)&psession);if(failed(hresult))
{
return hresult;
}
eautoreleaseptr
piopenrowset;
hresult = psession->createsession(null, iid_iopenrowset,(iunknown**)&piopenrowset);if(failed(hresult))
{
return hresult;
}
* ppiopenrowset = ();
return s_ok;}
hresult createcommand(iopenrowset* piopenrowset, icommand** ppicommand, icommandtext** ppicommandtext){
assert(piopenrowset!= null && ppicommand!= null && ppicommandtext!= null);
hresult hresult;
eautoreleaseptr
picommand;
{eautoreleaseptr
picreatecommand;
hresult = piopenrowset->queryinterface(iid_idbcreatecommand,(void**)&picreatecommand);if(failed(hresult))
{
return hresult;
}
hresult = picreatecommand->createcommand(null, iid_icommand,(iunknown**)&picommand);
if(failed(hresult))
{
return hresult;
}
}
eautoreleaseptr
picommandtext;
hresult = picommand->queryinterface(&picommandtext);if(failed(hresult))
{
return hresult;
}
* ppicommand = ();
* ppicommandtext = ();
return s_ok;}
hresult executesql(icommand* picommand, icommandtext* picommandtext, lpctstr pszcommand, long* plrowsaffected){
assert(picommand!= null && picommandtext!= null && pszcommand!= null && pszcommand[0]!= 0);
hresult hresult = picommandtext->setcommandtext(dbguid_dbsql,(lpcolestr)pszcommand);
if(failed(hresult))
{
return hresult;
}
long laffected;
hresult = picommand->execute(null, iid_null, null, plrowsaffected == null ? &laffected : plrowsaffected,(iunknown**)null);
return hresult;}
以上就是寫數據庫的全部代碼了,,是不是很簡單呢,?下面再來讀的。
// 先用與上面代碼中一樣的步驟獲取picommand,,picommandtext,。此處省略
hresult hresult = picommandtext->setcommandtext(dbguid_dbsql,(lpcolestr)_t(”select volume from 2005_1 where id = @@identity"));//取我們剛剛添加的那一條記錄
if(failed(hresult)){
return;}
long laffected;eautoreleaseptr
pirowset;hresult = picommand->execute(null, iid_irowset, null, &laffected,(iunknown**)&pirowset);if(failed(hresult)){
return;}eautoreleaseptr
piaccessor;hresult = pirowset->queryinterface(iid_iaccessor,(void**)&piaccessor);if(failed(hresult)){
return;}// 一個根據表中各字段的數值類型而定義的結構,用于存儲返回的各字段的值
struct cloadlastfromdb {
dbstatus dwdsvolume;
dword
dwlenvolume;
float
fvolume;};
// 此處我們只查詢了一個字段,。如果要查詢多個字段,,cloadlastfromdb中要添加相應的字段定義,下面的dbbinding也要相應擴充,。dbbinding[].iordinal要分別指向各個字段,,dbbinding[].wtype要根據字段類型賦合適的值。
dbbinding dbbinding[1];dbbinding[0].iordinal
= 1;
// volume 字段的位置,,從 1 開始
dbbinding[0].obvalue
= offsetof(cloadlastfromdb, fvolume);dbbinding[0].oblength
= offsetof(cloadlastfromdb, dwlenvolume);dbbinding[0].obstatus
= offsetof(cloadlastfromdb, dwdsvolume);dbbinding[0].ptypeinfo
= null;dbbinding[0].pobject
= null;dbbinding[0].pbindext
= null;dbbinding[0].dwpart
= dbpart_value | dbpart_status | dbpart_length;dbbinding[0].dwmemowner = dbmemowner_clientowned;dbbinding[0].eparamio
= dbparamio_notparam;dbbinding[0].cbmaxlen
= 0;dbbinding[0].dwflags
= 0;
數據庫工程師求職篇三
尊敬的人力資源部領導:
您好!我叫,,感謝您在百忙之中查看我的資料。我是新華學校的一名應屆畢業(yè)生,,在校期間,,我勤奮努力學習,成績優(yōu)異,多次獲學校學金,,掌握了windows,、c語言、pasca,、,數據結構,、數據庫原理等專業(yè)基礎知識。同時,,通過大量的實際操作,,我熟練掌握了dos,windows操作系統,并對unix有一定的了解,,能夠獨立word,、excel、photoshop等應用等軟件,,有一定的語言編程基礎,,在經濟信息及計算機應用專業(yè)通過三年的學習,我已具備了扎實的專業(yè)基礎知識功底,。
作為一名的學生,,我認識到互聯網將在未來經濟中發(fā)揮巨大的作用,所以,,業(yè)余時間我刻苦自學了很多網絡知識,。首先,在internet基礎應用方面,,比如瀏覽網頁,,搜索引擎的使用,網上查找,,下載所需信息等都很熟練,。而且,我還不滿足于此,,進一步學習了html語言,,和,frontpage,,dreamweaver等網頁編輯軟件,,firework,flash等網頁圖形處理軟件,,可以自如的進行網頁編輯?,F在我在互聯網上,就已經建立了自己的個人主頁,,并用文件傳輸協議(ftp)進行維護和,。不斷的努力使我的網站日趨成熟,。
當然一個高素質除了掌握扎實的專業(yè)知識,還應該具有豐富的人文知識,。我從小熱愛文學,,廣覽群書,為我的寫作能力奠定了堅實的基礎,。讀書以來,,不斷參加校內外征文活動,發(fā)表過作品數篇,。特別在大學期間,被特邀為校報記者,參賽文章多次獲得校園文學獎。.此外,在英語的學習方面,我已具備了一定的聽,說,寫和會話能力,可以用英語進行日常的交流,。
未來社會需要的是理論和實踐相結合的復合型,。學習之余,我參加了大量的社會實踐活動,,做家教,,去商場做過促銷員,從而鍛煉了自己吃苦耐勞,一絲不茍的工作做風.未來是一個充滿挑戰(zhàn)的世界,,鮮花和榮譽只能代表過去,。年輕的我希望公司給我展示自我的機會。沒有您伯樂的眼光,,對我來講那是一種遺憾,。因此,我非常希望能夠成為貴公司的一員,。我將以更大的熱情和勤奮上進的工作態(tài)度投入到新的工作環(huán)境中去,,為公司的發(fā)展添磚加瓦。
愿公司的明天更美好!
此致
敬禮