最新數(shù)據(jù)庫編程的求職信息(3篇)

格式:DOC 上傳日期:2023-01-11 13:19:18
最新數(shù)據(jù)庫編程的求職信息(3篇)
時間:2023-01-11 13:19:18     小編:zdfb

在日常學習、工作或生活中,大家總少不了接觸作文或者范文吧,通過文章可以把我們那些零零散散的思想,聚集在一塊。寫范文的時候需要注意什么呢?有哪些格式需要注意呢?下面我給大家整理了一些優(yōu)秀范文,希望能夠幫助到大家,我們一起來看一看吧。

數(shù)據(jù)庫編程的求職信息篇一

當前各種主流數(shù)據(jù)庫有很多,包括oracle, ms sql server, sybase, informix, mysql, db2, interbase / firebird, postgresql, sqlite, sap/db, timesten, ms access等等。數(shù)據(jù)庫編程是對數(shù)據(jù)庫的創(chuàng)建、讀寫等一列的操作。數(shù)據(jù)庫編程分為數(shù)據(jù)庫客戶端編程與數(shù)據(jù)庫服務器端編程。數(shù)據(jù)庫客戶端編程主要使用odbc api、ado、、oci、otl等方法;數(shù)據(jù)庫服務端編程主要使用ole db等方法。數(shù)據(jù)庫編程需要掌握一些訪問數(shù)據(jù)庫技術方法,還需要注意怎么設計高效的數(shù)據(jù)庫、數(shù)據(jù)庫管理與運行的優(yōu)化、數(shù)據(jù)庫語句的優(yōu)化。

一、訪問數(shù)據(jù)庫技術方法

數(shù)據(jù)庫編程分為數(shù)據(jù)庫客戶端編程與數(shù)據(jù)庫服務器端編程。數(shù)據(jù)庫客戶端編程主要使用odbc api、ado、、oci、otl等方法;數(shù)據(jù)庫服務端編程主要使用ole db等方法。

1、幾種是數(shù)據(jù)庫訪問方法比較

odbc

api是一種適合數(shù)據(jù)庫底層開發(fā)的編程方法,odbc

api提供大量對數(shù)據(jù)源的操作,odbc

api能夠靈活地操作游標,支持各種幫定選項,在所有odbc相關編程中,api編程具有最高的執(zhí)行速度。dao提供了很好的數(shù)據(jù)庫編程的對象模型.但是,對數(shù)據(jù)庫的所有調(diào)用以及輸出的數(shù)據(jù)都必須通過access/jet數(shù)據(jù)庫引擎,這對于使用數(shù)據(jù)庫應用程序,是嚴重的瓶頸。

ole

db提供了com接口,與傳統(tǒng)的數(shù)據(jù)庫接口相比,有更好的健壯性和靈活性,具有很強的錯誤處理能力,能夠同非關系數(shù)據(jù)源進行通信。

ado最主要的優(yōu)點在于易于使用、速度快、內(nèi)存支出少和磁盤遺跡小。

是利用數(shù)據(jù)集的概念將數(shù)據(jù)庫數(shù)據(jù)讀入內(nèi)存中,然后在內(nèi)存中對數(shù)據(jù)進行操作,最后將數(shù)據(jù)集數(shù)據(jù)回寫到源數(shù)據(jù)庫中。

otl 是 oracle, odbc and db2-cli template library 的縮寫,是一個c++編譯中操控關系數(shù)據(jù)庫的模板庫,otl中直接操作oracle主要是通過oracle提供的oci接口進行,進行操作db2數(shù)據(jù)庫則是通過cli接口來進行,至于ms的數(shù)據(jù)庫和其它一些數(shù)據(jù)庫,則otl只提供了odbc來操作的方式。當然oracle和db2也可以由otl間接使用odbc的方式來進行操縱。具有以下優(yōu)點:跨平臺;運行效率高,與c語言直接調(diào)用api相當;開發(fā)效率高,使用起來更簡單,更簡潔;部署容易,不需要ado組件, framework 等。

2、vc數(shù)據(jù)庫編程幾種方法

vc數(shù)據(jù)庫編程幾種方法,包括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的一部分,是一個標準數(shù)據(jù)庫接口。它提供對關系數(shù)據(jù)庫訪問的統(tǒng)一接口,實現(xiàn)對異構數(shù)據(jù)源的一致訪問。odbc數(shù)據(jù)訪問由以下部分組成:

<1>句柄(handles):odbc使用句柄來標識odbc環(huán)境、連接、語句和描述器.<2>緩存區(qū)(buffers):

<3>數(shù)據(jù)類型(data

types)

<4>一致性級別(conformance

levels)

用odbc設計客戶端的一般步驟:

<1>分配odbc環(huán)境

<2>分配連接句柄

<3>連接數(shù)據(jù)源

<4>構造和執(zhí)行sql語句

<5>獲得查詢結果

<6>斷開數(shù)據(jù)源的連接

<7>釋放odbc環(huán)境

odbc

api是一種適合數(shù)據(jù)庫底層開發(fā)的編程方法,odbc

api提供大量對數(shù)據(jù)源的操作,odbc

api能夠靈活地操作游標,支持各種幫定選項,在所有odbc相關編程中,api編程具有最高的執(zhí)行速度.因此,odbc

api編程屬于底層編程。

odbc連接

mfc

odbc是mfc對odbc進行的封裝,以簡化對odbc

api的 調(diào)用,

odbc的封裝主要開發(fā)了cdatabase類和crecordset類

(1)cdatabase類

cdatabase類用于應用程序建立同數(shù)據(jù)源的連接。cdatabase類中包含一個m_hdbc變量,它代表了數(shù)據(jù)源的連接句柄。如果要建立cdatabase類的實例,應先調(diào)用該類的構造函數(shù),再調(diào)用open函數(shù),通過調(diào)用,初始化環(huán)境變量,并執(zhí)行與數(shù)據(jù)源的連接。在通過close函數(shù)關閉數(shù)據(jù)源。

cdatabase類提供了對數(shù)據(jù)庫進行操作的函數(shù)及事務操作。

(2)crecordset類

crecordset類定義了從數(shù)據(jù)庫接收或者發(fā)送數(shù)據(jù)到數(shù)據(jù)庫的成員變量,以實現(xiàn)對數(shù)據(jù)集的數(shù)據(jù)操作。

crecordset類的成員變量m_hstmt代表了定義該記錄集的sql語句句柄,m_nfields為記錄集中字段的個數(shù),m_nparams為記錄集所使用的參數(shù)個數(shù)。

crecordset的記錄集通過cdatabase實例的指針實現(xiàn)同數(shù)據(jù)源的連接,

odbc編程更適合于界面型數(shù)據(jù)庫應用程序的開發(fā),但由于cdatabase類和crecordset類提供的數(shù)據(jù)庫操作函數(shù)有限,支持的游標類型也有限,限制了高效的數(shù)據(jù)庫開發(fā)。在編程層次上屬于高級編程。

應用實例: 1.打開數(shù)據(jù)庫

cdatabase database;

(_t(“dsn=zhuxue”),cdatabase::noodbcdialog);//zhuxue為數(shù)據(jù)源名稱

2.關聯(lián)記錄集

crecordset recset(&database);

3.查詢記錄

cstring ssql1=“";

ssql1 = ”select * from tablename“;

(crecordset::forwardonly, ssql1, crecordset::readonly);

int ti=0;

cdbvariant var;//var可以轉換為其他類型的值

while(!())

{

//讀取excel內(nèi)部數(shù)值

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();//列數(shù)

cstring excelfield[30];

//得到記錄集的字段集合中的字段的總個數(shù)

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)建數(shù)據(jù)庫(既excel表格文件)

if((ssql,cdatabase::noodbcdialog))

{

//可以把excel作為一個數(shù)據(jù)庫操作

}

}

catch(e)

{

trace1(”excel驅動沒有安裝: %s“,sdriver);

afxmessagebox(”讀取失敗,請檢查是否定義數(shù)據(jù)區(qū)sheet1“);

}

連接

dao(data

access

object)是一組microsoft

access/直接與access/jet數(shù)據(jù)庫通信.通過jet數(shù)據(jù)庫引擎,dao也可以同其他數(shù)據(jù)庫進行通信。dao還封裝了access數(shù)據(jù)庫的結構單元,通過dao可以直接修改access數(shù)據(jù)庫的結構,而不必使用sql的數(shù)據(jù)定義語言(ddl)。

dao的體系結構如下:

dao封裝的類:

(1)cdaoworkspace:對dao工作區(qū)(數(shù)據(jù)庫處理事務管理器)的封裝

(2)cdaodatabase:對dao數(shù)據(jù)庫對象的封裝,負責數(shù)據(jù)庫連接.(3)cdaorecordset:對dao記錄集對象的封裝,代表所選的一組記錄.(4)cdaotabledef:對表定義對象的封裝,代表基本表或附加表定義.(5)cdaoquerydef:對查詢對象的封裝,包含所有查詢的定義.(6)cdaoexception:dao用于接收數(shù)據(jù)庫操作異常的類.(7)cdaofieldexchange

dao提供了很好的數(shù)據(jù)庫編程的對象模型.但是,對數(shù)據(jù)庫的所有調(diào)用以及輸出的數(shù)據(jù)都必須通過access/jet數(shù)據(jù)庫引擎,這對于使用數(shù)據(jù)庫應用程序,是嚴重的瓶頸。

dao相對于odbc來說,

db連接

ole

db對odbc進行了兩方面的擴展:一是提供了數(shù)據(jù)庫編程的ole接口即com,二是提供了一個可用于關系型和非關系型數(shù)據(jù)源的接口。

ole

db提供了com接口,與傳統(tǒng)的數(shù)據(jù)庫接口相比,有更好的健壯性和靈活性,具有很強的錯誤處理能力,能夠同非關系數(shù)據(jù)源進行通信。

與odbc

api一樣,ole

db也屬于底層的數(shù)據(jù)庫編程接口,ole

db結合了odbc對關系數(shù)據(jù)庫的操作功能,并進行擴展,可以訪問非關系數(shù)據(jù)庫。

ole

db訪問數(shù)據(jù)庫的原理如下:

ole

db程序結構:

ole

db由客戶(consumer)和服務器(provider)??蛻羰鞘褂脭?shù)據(jù)的應用程序,它通過ole

db接口對數(shù)據(jù)提供者的數(shù)據(jù)進行訪問和控制。ole

db服務器是提供ole

db接口的軟件組件。根據(jù)提供的內(nèi)容可以分為數(shù)據(jù)提供程序(data

provider)和服務提供程序(service

provider)。

程序結構原理圖如下:

<1>數(shù)據(jù)提供程序

數(shù)據(jù)提供程序擁有自己的數(shù)據(jù)并把數(shù)據(jù)以表格的形式呈現(xiàn)給使用者使用.<2>服務提供程序

服務提供程序是數(shù)據(jù)提供程序和使用者的結合。它是ole

db體系結構中的中間件,它是ole

db數(shù)據(jù)源的使用者和數(shù)據(jù)使用程序的提供者

<3>數(shù)據(jù)使用程序

db開發(fā)程序的一般步驟:

<1>初始化com環(huán)境

<2>連接數(shù)據(jù)源

<3>打開對話

<4>執(zhí)行命令

<5>處理結果

<6>清除對象

應用實例:

使用oledb編寫數(shù)據(jù)庫應用程序 1

概述

ole db的存在為用戶提供了一種統(tǒng)一的方法來訪問所有不同種類的數(shù)據(jù)源。ole db可以在不同的數(shù)據(jù)源中進行轉換。利用ole db,客戶端的開發(fā)人員在進行數(shù)據(jù)訪問時只需把精力集中在很少的一些細節(jié)上,而不必弄懂大量不同數(shù)據(jù)庫的訪問協(xié)議。ole db是一套通過com接口訪問數(shù)據(jù)的activex接口。這個ole db接口相當通用,足以提供一種訪問數(shù)據(jù)的統(tǒng)一手段,而不管存儲數(shù)據(jù)所使用的方法如何。同時,ole db還允許開發(fā)人員繼續(xù)利用基礎數(shù)據(jù)庫技術的優(yōu)點,而不必為了利用這些優(yōu)點而把數(shù)據(jù)移出來。

使用atl使用ole db數(shù)據(jù)使用程序

由于直接使用ole db的對象和接口設計數(shù)據(jù)庫應用程序需要書寫大量的代碼。為了簡化程序設計,visual c++提供了atl模板用于設計ole db數(shù)據(jù)應用程序和數(shù)據(jù)提供程序。利用atl模板可以很容易地將ole db與mfc結合起來,使數(shù)據(jù)庫的參數(shù)查詢等復雜的編程得到簡化。mfc提供的數(shù)據(jù)庫類使ole db的編程更具有面向對象的特性。viual c++所提供用于ole db的atl模板可分為數(shù)據(jù)提供程序的模板和數(shù)據(jù)使用程序的模板。

使用atl模板創(chuàng)建數(shù)據(jù)應用程序一般有以下幾步驟: 1)、創(chuàng)建應用框架

2)、加入atl產(chǎn)生的模板類

3)、在應用中使用產(chǎn)生的數(shù)據(jù)訪問對象3 不用atl使用ole db數(shù)據(jù)使用程序

利用atl模板產(chǎn)生數(shù)據(jù)使用程序較為簡單,但適用性不廣,不能動態(tài)適應數(shù)據(jù)庫的變化。下面我們介紹直接使用mfc ole db類來生成數(shù)據(jù)使用程序。模板的使用

ole db數(shù)據(jù)使用者模板是由一些模板組成的,包括如下一些模板,下面對一些常用類作一些介紹。1)、會話類 cdatasource類

cdatasource類與ole db的數(shù)據(jù)源對象相對應。這個類代表了ole db數(shù)據(jù)提供程序和數(shù)據(jù)源之間的連接。只有當數(shù)據(jù)源的連接被建立之后,才能產(chǎn)生會話對象,可以調(diào)用open來打開數(shù)據(jù)源的連接。csession類

csession所創(chuàng)建的對象代表了一個單獨的數(shù)據(jù)庫訪問的會話。一個用cdatasource類產(chǎn)生的數(shù)據(jù)源對象可以創(chuàng)建一個或者多個會話,要在數(shù)據(jù)源對象上產(chǎn)生一個會話對象,需要調(diào)用函數(shù)open()來打開。同時,會話對象還可用于創(chuàng)建事務操作。

cenumeratoraccessor類

cenumeratoraccessor類是用來訪問枚舉器查詢后所產(chǎn)生的行集中可用數(shù)據(jù)提供程序的信息的訪問器,可提供當前可用的數(shù)據(jù)提供程序和可見的訪問器。2)、訪問器類 cacessor類

caccessor類代表與訪問器的類型。當用戶知道數(shù)據(jù)庫的類型和結構時,可以使用此類。它支持對一個行集采用多個訪問器,并且,存放數(shù)據(jù)的緩沖區(qū)是由用戶分配的。cdynamicaccessor類

cdynamicaccessor類用來在程序運行時動態(tài)的創(chuàng)建訪問器。當系統(tǒng)運行時,可以動態(tài)地從行集中獲得列的信息,可根據(jù)此信息動態(tài)地創(chuàng)建訪問器。cmanualaccessor類

cmanualaccessor類中以在程序運行時將列與變量綁定或者是將參數(shù)與變量捆定。3)、行集類 crowset類

crowset類封裝了行集對象和相應的接口,并且提供了一些方法用于查詢、設置數(shù)據(jù)等??梢杂胢ove()等函數(shù)進行記錄移動,用getdata()函數(shù)讀取數(shù)據(jù),用insert()、delete()、setdata()來更新數(shù)據(jù)。cbulkrowset類

cbulkrowset類用于在一次調(diào)用中取回多個行句柄或者對多個行進行操作。carrayrowset類

carrayrowset類提供用數(shù)組下標進行數(shù)據(jù)訪問。4)、命令類 ctable類 ctable類用于對數(shù)據(jù)庫的簡單訪問,用數(shù)據(jù)源的名稱得到行集,從而得到數(shù)據(jù)。ccommand類

ccommand類用于支持命令的數(shù)據(jù)源??梢杂胦pen()函數(shù)來執(zhí)行sql命令,也可以prepare()函數(shù)先對命令進行準備,對于支持命令的數(shù)據(jù)源,可以提高程序的靈活性和健壯性。

在stdafx.h頭文件里,加入如下代碼。#include extern ccommodule _module;#include #include #include // if you are using schema templates 文件里,加入如下代碼。#include ccommodule _module;決定使用何種類型的存取程序和行集。獲取數(shù)據(jù)

在打開數(shù)據(jù)源,會話,行集對象后就可以獲取數(shù)據(jù)了。所獲取的數(shù)據(jù)類型取決于所用的存取程序,可能需要綁定列。按以下步驟。

1、用正確的命令打開行集對象。

2、如果使用cmanualaccessor,在使用之前與相應列進行綁定。要綁定列,可以用函數(shù)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)來取數(shù)據(jù)。在循環(huán)中,調(diào)用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)內(nèi),可以通過不同的存取程序獲取數(shù)據(jù)。1)如果使用的是caccessor類,可以通過使用它們的數(shù)據(jù)成員進行直接訪問。如下所示:

2)如果使用的是cdynamicaccessor 或cdynamicparameteraccessor 類,可以通過getvalue或getcolumn函數(shù)來獲取數(shù)據(jù)。可以用gettype來獲取所用數(shù)據(jù)類型。如下所示: 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,可以指定自己的數(shù)據(jù)成員,綁定它們。就可以直接存取。如下所示: while(xt()== s_ok){

// use the data members you specified in the calls to

// tf(”%s“, szfoo);} 決定行集的數(shù)據(jù)類型

在運行時決定數(shù)據(jù)類型,要用動態(tài)或手工的存取程序。如果用的是手工存取程序,可以用getcolumninfo函數(shù)得到行集的列信息。從這里可以得到數(shù)據(jù)類型。4

總結

由于現(xiàn)在有多種數(shù)據(jù)源,想要對這些數(shù)據(jù)進行訪問管理的唯一途徑就是通過一些同類機制來實現(xiàn),如ole db。高級ole db結構分成兩部分:客戶和提供者??蛻羰褂糜商峁┱呱傻臄?shù)據(jù)。

就像其它基于com的多數(shù)結構一樣,ole db的開發(fā)人員需要實現(xiàn)很多的接口,其中大部分是模板文件。

當生成一個客戶對象時,可以通過atl對象向導指向一個數(shù)據(jù)源而創(chuàng)建一個簡單的客戶。atl對象向導將會檢查數(shù)據(jù)源并創(chuàng)建數(shù)據(jù)庫的客戶端代理。從那里,可以通過ole db客戶模板使用標準的瀏覽函數(shù)。

當生成一個提供者時,向導提供了一個很好的開端,它們僅僅是生成了一個簡單的提供者來列舉某一目錄下的文件。然后,提供者模板包含了ole db支持的完全補充內(nèi)容。在這種支持下,用戶可以創(chuàng)建ole db提供者,來實現(xiàn)行集定位策略、數(shù)據(jù)的讀寫以及建立書簽。應用案例:

visual c++中使用ole db讀寫sql server 在需要對數(shù)據(jù)庫進行操作時,ole db總是被認為是一種效率最高但最難的方法。但是以我最近使用ole db的經(jīng)驗看來,ole db的效率高則高矣,但卻一點都不難。說它難恐怕主要是因為可參考的中文資料太少,為了幫助以后需要接觸ole db的同行,我撰寫了這篇文章。本文包含如下內(nèi)容:

db寫數(shù)據(jù)庫; db讀數(shù)據(jù)庫;

db對二進制數(shù)據(jù)(text、ntext、image等)的處理。

首先來看看對sql server進行寫操作的代碼,有一定vc基礎的讀者應該可以很順利地看懂。ole db寫數(shù)據(jù)庫,就是這么簡單!

注:

1.以下代碼中使用的模板類eautoreleaseptr

與atl中的ccomptr

類似,是一個在析構時自動調(diào)用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)){

//失敗,可能是因為數(shù)據(jù)庫沒有啟動、用戶名密碼錯等等

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)“));//...其中幾個函數(shù)的代碼如下:

hresult connectdatabase(idbinitialize** ppidbinitialize, lpctstr pszdatasource, lpctstr pszuserid, lpctstr pszpassword){

assert(ppidbinitialize!= null && pszdatasource!= null && pszuserid!= null && pszpassword!= null);

uint utimeout = 15u;// 連接數(shù)據(jù)庫超時(秒)

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;}

以上就是寫數(shù)據(jù)庫的全部代碼了,是不是很簡單呢?下面再來讀的。

// 先用與上面代碼中一樣的步驟獲取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;}

// 一個根據(jù)表中各字段的數(shù)值類型而定義的結構,用于存儲返回的各字段的值

struct cloadlastfromdb {

dbstatus dwdsvolume;

dword

dwlenvolume;

float

fvolume;};

// 此處我們只查詢了一個字段。如果要查詢多個字段,cloadlastfromdb中要添加相應的字段定義,下面的dbbinding也要相應擴充。dbbinding[].iordinal要分別指向各個字段,dbbinding[].wtype要根據(jù)字段類型賦合適的值。

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;

數(shù)據(jù)庫編程的求職信息篇二

數(shù)據(jù)庫編程的自薦信例文,關鍵詞是自薦信,數(shù)據(jù)庫編程,

尊敬的人力資源部領導:

您好!我叫劉欣,感謝您在百忙之中查看我的資料。我是新華學校的一名好范文,在校期間,我勤奮努力學習,成績優(yōu)異,多次獲學校學金,掌握了windows、c語言、pasca、,數(shù)據(jù)結構、數(shù)據(jù)庫原理等專業(yè)基礎知識。同時,通過大量的實際操作,我熟練掌握了dos,windows操作系統(tǒng),并對unix有一定的了解,能夠獨立word、excel、photoshop等應用等軟件,有一定的語言編程基礎,在經(jīng)濟信息及計算機應用專業(yè)通過三年的學習,我已具備了扎實的專業(yè)基礎知識功底。

作為一名的學生,我認識到互聯(lián)網(wǎng)將在未來經(jīng)濟中發(fā)揮巨大的作用,所以,業(yè)余時間我刻苦自學了很多網(wǎng)絡知識。首先,在internet基礎應用方面,比如瀏覽網(wǎng)頁,搜索引擎的使用,網(wǎng)上查找,下載所需信息等都很熟練。而且,我還不滿足于此,進一步學習了html語言,和,frontpage,dreamweaver等網(wǎng)頁編輯軟件,firework,flash等網(wǎng)頁圖形處理軟件,可以自如的進行網(wǎng)頁編輯?,F(xiàn)在我在互聯(lián)網(wǎng)上,就已經(jīng)建立了自己的個人主頁,并用文件傳輸協(xié)議(ftp)進行維護和。不斷的努力使我的網(wǎng)站日趨成熟。

當然一個高素質(zhì)除了掌握扎實的專業(yè)知識,還應該具有豐富的人文知識。我從小熱愛文學,廣覽群書,為我的寫作能力奠定了堅實的基礎。讀書以來,不斷參加校內(nèi)外征文活動,發(fā)表過作品數(shù)篇。特別在大學期間,被特邀為校報記者,參賽文章多次獲得校園文學獎。.此外,在英語的學習方面,我已具備了一定的聽,說,寫和會話能力,可以用英語進行日常的交流。

未來社會需要的是理論和實踐相結合的復合型。學習之余,我參加了大量的社會實踐活動,做家教,去商場做過促銷員,從而鍛煉了自己吃苦耐勞,一絲不茍的工作做風.未來是一個充滿挑戰(zhàn)的世界,鮮花和榮譽只能代表過去。年輕的我希望公司給我展示自我的機會。沒有您伯樂的眼光,對我來講那是一種遺憾。因此,我非常希望能夠成為貴公司的一員。我將以更大的熱情和勤奮上進的工作態(tài)度投入到新的工作環(huán)境中去,為公司的發(fā)展添磚加瓦。

愿公司的明天更美好!

此致

敬禮

數(shù)據(jù)庫編程的求職信息篇三

尊敬的人力資源部領導:

您好!我叫,感謝您在百忙之中查看我的資料。我是新華學校的一名應屆畢業(yè)生,在校期間,我勤奮努力學習,成績優(yōu)異,多次獲學校學金,掌握了windows、c語言、pasca、,數(shù)據(jù)結構、數(shù)據(jù)庫原理等專業(yè)基礎知識。同時,通過大量的實際操作,我熟練掌握了dos,windows操作系統(tǒng),并對unix有一定的了解,能夠獨立word、excel、photoshop等應用等軟件,有一定的語言編程基礎,在經(jīng)濟信息及計算機應用專業(yè)通過三年的學習,我已具備了扎實的專業(yè)基礎知識功底。

作為一名的學生,我認識到互聯(lián)網(wǎng)將在未來經(jīng)濟中發(fā)揮巨大的作用,所以,業(yè)余時間我刻苦自學了很多網(wǎng)絡知識。首先,在internet基礎應用方面,比如瀏覽網(wǎng)頁,搜索引擎的使用,網(wǎng)上查找,下載所需信息等都很熟練。而且,我還不滿足于此,進一步學習了html語言,和,frontpage,dreamweaver等網(wǎng)頁編輯軟件,firework,flash等網(wǎng)頁圖形處理軟件,可以自如的進行網(wǎng)頁編輯?,F(xiàn)在我在互聯(lián)網(wǎng)上,就已經(jīng)建立了自己的個人主頁,并用文件傳輸協(xié)議(ftp)進行維護和。不斷的努力使我的網(wǎng)站日趨成熟。

當然一個高素質(zhì)除了掌握扎實的專業(yè)知識,還應該具有豐富的人文知識。我從小熱愛文學,廣覽群書,為我的寫作能力奠定了堅實的基礎。讀書以來,不斷參加校內(nèi)外征文活動,發(fā)表過作品數(shù)篇。特別在大學期間,被特邀為校報記者,參賽文章多次獲得校園文學獎。.此外,在英語的學習方面,我已具備了一定的聽,說,寫和會話能力,可以用英語進行日常的交流。

未來社會需要的是理論和實踐相結合的復合型。學習之余,我參加了大量的社會實踐活動,做家教,去商場做過促銷員,從而鍛煉了自己吃苦耐勞,一絲不茍的工作做風.未來是一個充滿挑戰(zhàn)的世界,鮮花和榮譽只能代表過去。年輕的我希望公司給我展示自我的機會。沒有您伯樂的眼光,對我來講那是一種遺憾。因此,我非常希望能夠成為貴公司的一員。我將以更大的熱情和勤奮上進的工作態(tài)度投入到新的工作環(huán)境中去,為公司的發(fā)展添磚加瓦。

愿公司的明天更美好!

此致

敬禮

【本文地址:http://www.aiweibaby.com/zuowen/1084136.html】

全文閱讀已結束,如果需要下載本文請點擊

下載此文檔