http://blog.csdn.net/cnlht/archive/2007/12/12/1930960.aspx原文地址 html
實驗內容: c++
掌握SQL Server 2000的預編譯程序NSQLPREP.EXE的使用(以課本例題1進行調試); sql
實驗步驟: 數據庫
1、數據庫環境配置 服務器
一、建立xuesheng數據庫,創建student表等; 編輯器
二、關閉sql server 2000服務管理器; 工具
三、將devtools文件夾拷貝到:C:\Program Files\Microsoft SQL Server post
四、將Binn文件夾拷貝到:C:\Program Files\Microsoft SQL Server\MSSQL url
五、啓動服務器; 操作系統
2、VC++6.0編輯器配置(初始化Vc++環境)
1.工具—>選擇—>目錄—>Include Files
添加: C:\Program Files\Microsoft SQL Server\devtools\include
並設爲第一項
2.選擇Library Files
添加:C:\Program Files\Microsoft SQL Server\devtools\x86lib
並設爲第一項
3、寫程序,預編譯,最後在VC++中編譯、執行
一、編輯EXEC.sqc文件,保存到:C:\Program Files\Microsoft SQL Server\MSSQL\Binn目錄
EXEC.sqc文件以下:
#include <stdio.h>
#include <stdlib.h>
EXEC SQL BEGIN DECLARE SECTION; /*主變量說明開始*/
char deptname[64];
char HSno[64];
char HSname[64];
char HSsex[64];
int HSage;
int NEWAGE;
long SQLCODE;
EXEC SQL END DECLARE SECTION; /*主變量說明結束*/
EXEC SQL INCLUDE sqlca; /*定義SQL通訊區*/
/*************************************************************************/
int main(void) /*C語言主程序開始*/
{
int count = 0;
char yn; /*變量yn表明yes或no*/
printf("Please choose the department name(CS/MA/IS): ");
scanf("%s", deptname); /*爲主變量deptname賦值*/
EXEC SQL CONNECT TO HP-08D6CXF128B\SQL2000 USER sa; /*鏈接數據庫TEST*/
EXEC SQL DECLARE SX CURSOR FOR /*定義遊標*/
SELECT Sno, Sname, Ssex, Sage /*SX對應語句的執行結果*/
FROM Student
WHERE SDept = :deptname;
EXEC SQL OPEN SX; /*打開遊標SX便指向查詢結果的第一行*/
for ( ; ; ) /*用循環結構逐條處理結果集中的記錄*/
{
EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage;
/*推動遊標,將當前數據放入主變量*/
if (sqlca->sqlcode != 0) /* sqlcode != 0,表示操做不成功*/
break; /*利用SQLCA中的狀態信息決定什麼時候退出循環*/
if(count++ == 0) /*若是是第一行的話,先打出行頭*/
printf("\n%-10s %-20s %-10s %-10s\n", "Sno", "Sname", "Ssex", "Sage");
printf("%-10s %-20s %-10s %-10d\n", HSno, HSname, HSsex, HSage);
/*打印查詢結果*/
printf("UPDATE AGE(y/n)?"); /*詢問用戶是否要更新該學生的年齡*/
do{
scanf("%c",&yn);
}
while(yn != 'N' && yn != 'n' && yn != 'Y' && yn != 'y');
if (yn == 'y' || yn == 'Y') /*若是選擇更新操做*/
{
printf("INPUT NEW AGE:");
scanf("%d",&NEWAGE); /*用戶輸入新年齡到主變量中*/
EXEC SQL UPDATE Student /*嵌入式SQL*/
SET Sage = :NEWAGE
WHERE CURRENT OF SX ;
} /*對當前遊標指向的學生年齡進行更新*/
}
EXEC SQL CLOSE SX; /*關閉遊標SX再也不和查詢結果對應*/
EXEC SQL COMMIT WORK; /*提交更新*/
EXEC SQL DISCONNECT TEST; /*斷開數據庫鏈接*/
}
二、使用MS-DOS進行預編譯:
1)進到Binn文件下:cd C:\Program Files\Microsoft SQL Server\MSSQL\Binn
2)調用預編譯程序nsqlprep.exe程序:nsqlprep EXEC
成功編譯完成結果:
見附件1
三、使用Vc++進行編譯,見附件2
四、添加庫文件:工程—>設置—>Link—>對象/庫模塊
輸入SQLakw32.lib Caw32.lib兩個文件名。附件3
注意,兩個文件之間用空格分開。
五、將動態連接庫SQLakw32.dll,sqlaiw32.dll文件拷貝到操做系統目錄下的子目錄C:\WINDOWS\system32中
六、鏈接:附件4
七、執行:附件5
附件1: