嵌入SQL的C應(yīng)用程序具體到VC++6.0, SQL Server2000 下調(diào)試可分為五步:1、環(huán)境初始化;2、預(yù)編譯;3、編譯;4、連接;5、運(yùn)行。下面就其中重要的的操作方法給以詳細(xì)說明。
1、環(huán)境初始化
??????? (1) SQL Server2000為其嵌入式SQL提供了一此特殊的接口;默認(rèn)的安裝方式?jīng)]有安裝這此接口;因此,需要把devtools.rar解壓到SQLServer的系統(tǒng)日錄下(即文件夾devtools中的所有文件);如果操作系統(tǒng)安裝在C盤,則SQL Server的系統(tǒng)目錄是C:\Program Files\Microsoft SQL Server。(或 在安裝Microsoft SQL Server 2000時選擇安裝Development Tools,為使用嵌入式SQL語言準(zhǔn)備必要的頭文件和庫文件。)
?????? ( 2)初始化Visual C++ 6.0編譯器環(huán)境。在命令行方式下運(yùn)行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
?????? (3)初始化SQL Server的預(yù)編譯環(huán)境。在命令行方式下運(yùn)行文件:\Devtools\samples\esqlc\setenv.bat。
?????? ( 4) VC++6.0環(huán)境配置。具體配置分為如下三步[:
?????????? ①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。將SQL server自帶的用于數(shù)據(jù)庫開發(fā)的頭文件包含到工程環(huán)境中。
????????? ②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。將開發(fā)用到的包包含到工程中。
?????????? ③project->Settings->Link->Object/Library Modules,添加庫文件:SQLakw32.lib, Caw32.lib。這兩個文件之間用空格分開。
2、預(yù)編譯
??? C語言編譯程序不能識別應(yīng)用程序中的SQL語句,需要經(jīng)過預(yù)處理程序?qū)⑵滢D(zhuǎn)換成C語句。SQL Server的預(yù)處理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安裝日錄的MSSQL\Binn下。若SQL Server數(shù)據(jù)庫采用的是默任安裝方式,則需要把binn.rar的內(nèi)容拷貝到指定目錄下。
?? Microsoft SQL Server 2000提供的預(yù)編譯程序nsqlprep.exe,用于對嵌入式SQL程序進(jìn)行預(yù)編譯處理,生成C語言源程序.實(shí)際上就是將嵌入式SQL程序中的嵌入式SQL語句替換為對運(yùn)行時庫文件Sqlakw32. dll的函數(shù)調(diào)用,接著運(yùn)行時庫文件調(diào)用動態(tài)連接庫Ntwdblib. dll通過網(wǎng)絡(luò)來存取Microsoft SQL Server 2000數(shù)據(jù)庫服務(wù)器.
??? 預(yù)編譯程序nsqlprep的常用語法為:
??? nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password
??? 其中ESQL_File是要預(yù)編譯的嵌入式SQL程序;/SQLACCESS通知nsqlprep自動地為嵌入式SQL程序中的靜態(tài)SQL語句創(chuàng)建相應(yīng)的存儲過程;/DB server_name.database_name指明要連接的服務(wù)器以及數(shù)據(jù)庫名稱;/PASS login.password給出登錄名及相應(yīng)的口令.
下面的程序demo.sqc實(shí)現(xiàn)了從數(shù)據(jù)庫服務(wù)器hushaobo的數(shù)據(jù)庫pubs中的authors表中讀取au_lname為white的人對應(yīng)的 au_fname 值,并保存到變量first_name 中顯示出來。(連接數(shù)據(jù)庫的用戶為sa,對應(yīng)密碼為1982)
#include<stdio.h>
void main()
{
EXEC SQL BEGIN DECLARE SECTION;
?? char first_name[40];
?? char last_name[]="White";
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO hushaobo.pubs
?? USER sa.1982;
EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name;
EXEC SQL DISCONNECT ALL;
printf("first name: %s?? \n",first_name);
}
在命令行下運(yùn)行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982
則生成demo.c,將該文件添加到VC工程中編譯即可。
3、編譯,連接與運(yùn)行
????? 在VC++6.0中創(chuàng)建一個 "WIN32 Console Application"的Proiect,然后將預(yù)編譯生成的c文件加入Proiect,編譯連接即可生成訪問SQL Server的可執(zhí)行程序。 Visual C++ 6.0進(jìn)行編譯連接時需要用到動態(tài)鏈接庫SQLakw32.d11與SQLaiw32.d11;盡管這兩個文件已經(jīng)隨同binn.rar被拷貝到SQLServer安裝目錄的MSSQL\Binn文件夾下,但仍然需要把它們的路徑加到系統(tǒng)路徑變量中,以使得程序運(yùn)行時能找到它們,具體添加方法如下:
???? 方法1:把這兩個文件拷貝到操作系統(tǒng)目錄下的system32子目錄中。
???? 方法2:我的電腦->屬性->高級->環(huán)境變量->path->編輯,在變量值中加入路徑值;新路徑與已有路徑間用;間隔。
注意調(diào)適程序時,文件名中不要包含cursor,否則可能會出錯。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
