版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、囊淼©的:1. 理解odbc的相關(guān)概念:odbc、句柄等;2. 理解odbc的工作原理;3. 掌握odbc的工作流程;4. 掌握通過(guò)odbc訪問(wèn)數(shù)據(jù)庫(kù)的方法二、實(shí)淼钚境:sql server 2008、vc+ 6.0三、囊游令時(shí):2學(xué)時(shí)(一)配置數(shù)據(jù)源配置數(shù)據(jù)源共有兩種方法:lo方法一:運(yùn)用數(shù)據(jù)源管理工具來(lái)進(jìn)行配s方法二:使用driver manager提供的configdsn函數(shù)來(lái)增加、修改或刪除數(shù)據(jù)源。這種方法特別適用于在應(yīng)用程序中創(chuàng)建的臨時(shí)使用的數(shù)據(jù)源,在本實(shí)驗(yàn)中,我們采用第一種方法創(chuàng)建數(shù)據(jù)源。我們將其取名為sqlserver。下面是建立這數(shù)據(jù)源的具體步7u;jwo選擇開(kāi)始
2、i設(shè)置i控制面板菜單,在彈出窗口中雙擊“管理工具"i標(biāo)進(jìn)入管理工具界面,雙擊“數(shù)據(jù)源(odbc r圖標(biāo)建立sqlserver數(shù)據(jù)源。(1 )選擇“系統(tǒng)dsn”選項(xiàng),單擊【添加(d).】按鈕,系統(tǒng)彈出“創(chuàng)建新?lián)础睂?duì)話框,如下圖所示:1數(shù)據(jù)源管理器(2)如固2所示,在odbc驅(qū)動(dòng)器程序列表中,選擇“sql server”,單擊【完成i 按鈕,系統(tǒng)彈出 “create new data source to sql server”對(duì)話框,如圖2所示:2創(chuàng)建數(shù)據(jù)源配置3)如圖3 ,輸入數(shù)據(jù)源名稱和服務(wù)器,單擊【下一步】按鈕。圖中數(shù)據(jù)源的名稱為sqlserver,服務(wù)器為(local)。如圖4
3、,選擇身份認(rèn)證方式,輸入用戶名和密碼,用戶名和口令分別為sa和sa (請(qǐng)根據(jù)實(shí)際情況進(jìn)行修改,并對(duì)源代碼進(jìn)行相應(yīng)的修t(n) >取消觸3 sqlserver數(shù)據(jù)源配置(1 )創(chuàng)建到sql server的新數(shù)據(jù)源sql server應(yīng)該如何裕ie登錄id的頁(yè)偽?o使用網(wǎng)洛登錄id的windows nt臉證(w).(;使用用戶瑤入曼錄id鍆宏碼的sql server驗(yàn)證(s).要更改用于與sql server愈r的網(wǎng)絡(luò)庫(kù),清單壬“客力聲頤0連接sql server以獲馮其它配直透項(xiàng)的默認(rèn)設(shè)罝(c).圖4 sqlserver數(shù)據(jù)源配置(2 )(4)連續(xù)單擊【下一步】按鈕,這樣就創(chuàng)建了一個(gè)名為“
4、sqlserver sqlserver odbc數(shù)據(jù)源。如圖5所示,將彈出一個(gè)提示框,提示即將創(chuàng)建一個(gè)新的odbc數(shù)據(jù)源。5提示框5)如果要測(cè)試和數(shù)據(jù)源的連接是否成功,可以單擊“test data source”,如果連接成功,系統(tǒng)將會(huì)顯示一個(gè)連接成功的消息框,如圖6所示。6連接成功以上五步就建立了一個(gè)名為sqlserver的數(shù)據(jù)源。注:在創(chuàng)建數(shù)據(jù)源,測(cè)試連接是否成功時(shí),如果kingbasees和sql server未啟動(dòng)服務(wù),則將顯示連接失敗。啟動(dòng)服務(wù)后,再進(jìn)行測(cè)試,連接成功(二)通過(guò)odbc訪問(wèn)數(shù)據(jù)庫(kù),并且對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。1. 實(shí)驗(yàn)環(huán)境介紹。在本實(shí)驗(yàn)中,我們將編寫程序連接到rdbms的數(shù)
5、據(jù)源,將數(shù)據(jù)錄入到sqlserver數(shù)據(jù)庫(kù)的student中。2. 在vc+6.0環(huán)境中編程實(shí)現(xiàn)訪問(wèn)數(shù)據(jù)庫(kù)。(1 )實(shí)驗(yàn)預(yù)備。本實(shí)驗(yàn)源程序名為odbc ,代碼在數(shù)據(jù)庫(kù)系統(tǒng)概論書中已經(jīng)給出。下我們將在vc+6.0環(huán)境下對(duì)該程序進(jìn)行編譯,(2) 實(shí)驗(yàn)步驟。首先,在vc+6.0中新建一個(gè)win32 console application的項(xiàng)目,并將項(xiàng)目命名為odbc03。然后,將已經(jīng)寫好的odbc.c文件加入到該項(xiàng)目的source files中,編譯并且執(zhí)行。(3) 實(shí)驗(yàn)源代碼。以下為本實(shí)驗(yàn)實(shí)際程序的源碼,并給出了一些注釋,供參考。#include <stdio.h>#include &
6、lt;iostream.h>#include <string.h>#include <windows.h>#include <sql.h>#include <sqlext.h>#include <odbcss.h>#define maxbuflen 255#define maxnamelen 20/下面這句是預(yù)處理語(yǔ)句,使程序在編譯時(shí)分別編譯綁定段或sqlgetdata段#define sqlbindcolsqlhenvsqlhdbcsqlhstmthenv = sql_null_henv;/定義環(huán)境句柄hdbcl = sql_
7、null_hdbc;/定義數(shù)據(jù)庫(kù)連接句柄hstmtl = sql_null_hstmt;/定義語(yǔ)句句柄int main()retcode retcode;/錯(cuò)誤返回碼/ allocate the odbc environment and save handle.retcode = sqlaiiochandle (sql_handle_env, null, &henv);if(retcode < 0 )/錯(cuò)誤處理cout«hallocate odbc environment handle errors.h«endl;return -1:/ notify odbc
8、 that this is an odbc 3.0 application.retcode = sqlsetenvattr(henv, sql_attr_odbc_version,(sqlpointer) sql_ov_odbc3, sqljsjnteger);if(retcode < 0 ) /錯(cuò)誤處理cout«"the odbc is not version3.0 "<<endl;return -1;/ allocate an odbc connection and connect.retcode = sqlaiiochandle(sql_h
9、andle_dbc, henv, &hdbc1);if(retcode < 0 ) /錯(cuò)誤處理cout«nallocate odbc connection handle errors."«endl;return -1;/data source name must be of type user dns or system dnschar* szdsn = "sql_37"char* szuid = "sa"/log namechar* szauthstr = h1234321 n;/passward/conne
10、ct to the data source retcode=sqlconnect(hdbc1,(sqlchar*)szdsn,(sword)strlen(szdsn),(sqlchar*)szuid, (sword)strlen(szuid),(sqlchar*)szauthstr,(sword)strlen(szauthstr);if(retcode < 0 ) /錯(cuò)誤處理cout«hconnect to odbc datasource errors.*'«endl;return -1;/ allocate a statement handle.retcod
11、e = sqlaiiochandle(sql_handle_stmt, hdbcl, &hstmt1);if(retcode < 0 ) /錯(cuò)誤處理cout«hallocate odbc statement handle errors."«endl;return -1;ii execute an sql statement directly on the statement handle.每一句后面都跟了一個(gè)錯(cuò)誤處理,當(dāng)發(fā)生錯(cuò)誤時(shí)可以很方便的判斷錯(cuò)在哪里retcode = sqlexecdirect(hstmt1,(sqlchar*)"cr
12、eate table s(sno char(5) primary key,sname char(10) not null,ssex char(2),sage int, sdeptchar(10)",sql一nts);if(retcode<0)cout«"creat errors."«endl;return -1;retcode = sqlexecdirect(hstmt1,(sqlchar*)"insert into s valuesf9500r/郝紅,女jo,1計(jì)科廣,sql_nts);if(retcode<0)cout
13、«"s1 insert errors.h«endl;return -1;retcode = sqlexecdirect(hstmt1,(sqlchar*)hinsert into s valuesc95002?秦沛男,21, 計(jì)科sqljsits);if(retcode<0)cout«"s2 insert errors.,«endl;return retcodesqlexecdirect(hstmt1,(sqlchar*)"insertinto svaluesf95003?劉蓉/女 |,22, 網(wǎng)絡(luò) *)",
14、sql_nts> if(retcode<0)cout«"s3 insert errors.t,«endl;return -1:retcodesqlexecdirect(hstmt1,(sqlchar*)"insertinto svaluesf95004?張超?男 jo,網(wǎng)絡(luò)*)",sql_nts> if(retcode<0)cout«"s4 insert errors.”<<endl;returninto sretcode = sqlexecdirect(hstmt1,(sqlchar*)
15、"insert valuesf950057 王珂/男 jo,軟件 y,sql_nts);if(retcode<0)cout«"s5 insert errors."«endl;return -retcode = sqlexecdirect(hstmt1,(sqlchar*)"insert into svaluesc95006?計(jì)劃/男',21,軟件 y,sql_nts>if(retcode<0)cout«"s6 insert errors.,'«endl;return -1
16、;retcode = sqlexecdirect(hstmt1,(sqlchar*)"seiect sname,sdeptfrom s", sql_nts);if(retcode < 0)cout«hexecuting statement throught odbc errors.m«endl;return -1;/ sqlbindcol variablessqlchar snamemaxnamelen + 1;sqlinteger columnlen = 0;/數(shù)據(jù)庫(kù)定義中該屬性列的長(zhǎng)度#ifdef sqlbindcol/游標(biāo)已被封裝在其中,一開(kāi)
17、始把兩個(gè)列號(hào)分別寫為s中的列號(hào)2( sname ), 5( sdept),第二個(gè)參數(shù)應(yīng)為游標(biāo)中的列號(hào),而不是表中的列號(hào),retcode=sqlbindcol(hstmt1,1,sql_c_char,sname,maxnamelen , &columnlen);retcode = sqlbindcol(hstmt1,2, sql_c_char,sdept,maxnamelen ,&columnlen);while (retcode = sqlfetch(hstmtl) != sql一no一data)if(columnlen>0)printffsname = %s sdept
18、 = %sn", sname,sdept);elseprintffsname = %s sdept = nulln", sname,sdept);#elsewhile(1 )retcode = sqlfetch(hstmtl);if(retcode = sql_no_data)sname,sdept,break;retcode = sqlgetdata(hstmt1, 1, sql_c_char,maxnamelen, &columnlen);retcode = sqlgetdata(hstmt1, 2, sql_c_char,maxnamelen, &columnlen);if(columnlen>0)printffsname = %s sdept = %sn", sname,sdept);elseprintffsname = %s sdept = nulln", sname,sdept);#endif/* clean up.*/sqlfreehandle(sql_handle_s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程承包合同(2篇)
- 2025年度個(gè)人股權(quán)變更及分紅權(quán)轉(zhuǎn)讓合同4篇
- 2025年度個(gè)人信托產(chǎn)品購(gòu)買合同樣本3篇
- 二零二五版人工智能技術(shù)研發(fā)公司并購(gòu)合同3篇
- 親情記敘文800字6篇
- 二零二五年度養(yǎng)老產(chǎn)業(yè)用地租賃協(xié)議4篇
- 高級(jí)數(shù)據(jù)分析課程設(shè)計(jì)
- 2024年育嬰員(高級(jí))理論考試題庫(kù)附答案(培訓(xùn)復(fù)習(xí)用)
- 二零二五年度苗圃苗木移植與景觀設(shè)計(jì)實(shí)施合同4篇
- 課程設(shè)計(jì)答疑記錄表
- 2025年湖北武漢工程大學(xué)招聘6人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 【數(shù) 學(xué)】2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)上冊(cè)期末能力提升卷
- GB/T 26846-2024電動(dòng)自行車用電動(dòng)機(jī)和控制器的引出線及接插件
- 遼寧省沈陽(yáng)市皇姑區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末考試語(yǔ)文試題(含答案)
- 2024年國(guó)家工作人員學(xué)法用法考試題庫(kù)及參考答案
- 妊娠咳嗽的臨床特征
- 國(guó)家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2024年金融理財(cái)-擔(dān)保公司考試近5年真題附答案
- 泰山產(chǎn)業(yè)領(lǐng)軍人才申報(bào)書
- 高中語(yǔ)文古代文學(xué)課件:先秦文學(xué)
評(píng)論
0/150
提交評(píng)論