版權(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)中,我們將編寫(xiě)程序連接到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)概論書(shū)中已經(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)寫(xiě)好的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)分別寫(xiě)為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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑施工合同風(fēng)險(xiǎn)的分析和對(duì)策
- 2025合同模板舞臺(tái)設(shè)備租賃合同范文范本
- 2025人民防空工程租賃使用合同示范
- 詩(shī)歌創(chuàng)作的靈感挖掘與表達(dá)技巧
- 民族藥理學(xué)視角下的少數(shù)民族醫(yī)藥研究進(jìn)展
- 2024年留置針項(xiàng)目資金申請(qǐng)報(bào)告
- 科技賦能現(xiàn)代小區(qū)的智能安防系統(tǒng)設(shè)計(jì)與應(yīng)用研究
- 游泳教育中的法律責(zé)任與風(fēng)險(xiǎn)控制
- 3D打印行業(yè)報(bào)告:消費(fèi)電子鈦浪起3D打印黎明至
- 二零二五年度物聯(lián)網(wǎng)大數(shù)據(jù)通信接入合同3篇
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫(kù)含答案解析
- 2024年國(guó)家工作人員學(xué)法用法考試題庫(kù)及參考答案
- 國(guó)家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 同等學(xué)力英語(yǔ)申碩考試詞匯(第六版大綱)電子版
- 人教版五年級(jí)上冊(cè)遞等式計(jì)算100道及答案
- 墓地個(gè)人協(xié)議合同模板
- 2024年部編版初中語(yǔ)文各年級(jí)教師用書(shū)七年級(jí)(上冊(cè))
- 2024年新課標(biāo)全國(guó)Ⅰ卷語(yǔ)文高考真題試卷(含答案)
- 湖南省退休人員節(jié)日慰問(wèn)政策
- QB/T 5998-2024 寵物尿墊(褲)(正式版)
評(píng)論
0/150
提交評(píng)論