C言語の埋め込みSQLステートメント



Embedded Sql Statement C Language



実験内容

把握SQL Server 2000プリコンパイラNSQLPREP.EXE教科書の使用1デバッグ)



実験手順

まず、データベース環境の構成



1、作成xueshengデータベース、設立学生テーブルなど

、シャットダウンSQL Server 2000サービスマネージャ



3、意志devtoolsフォルダを次の場所にコピーします。C: Program Files Microsoft SQL Server

4、意志ビンフォルダを次の場所にコピーします。C: Program Files Microsoft SQL Server MSSQL

5サーバーを起動します

二、VC ++ 6.0エディター構成(初期化Vc ++周囲)

1.1。ツール->>選択する->>目次->ファイルを含める

追加:C: Program Files Microsoft SQL Server devtools include

そして最初のアイテムに設定します

二。選択するライブラリファイル

追加:C: Program Files Microsoft SQL Server devtools x86lib

そして最初のアイテムに設定します

第三に、プログラムを書き、プリコンパイルし、最後にVC ++コンパイルして実行する

1、編集EXEC.sqcファイル、保存先:C: Program Files Microsoft SQL Server MSSQL Binn目次

EXEC.sqcファイルは次のとおりです。

// EXEC.cpp:コンソールアプリケーションのエントリポイントを定義します。
//

#include
#include


EXEC SQL BEGIN DECLARE SECTION / *メイン変数の説明開始* /
char deptname [64]
char HSno [64]
char HSname [64]
char HSsex [64]
int HSage
intNEWAGE
長いSQLCODE
EXEC SQL END DECLARE SECTION / *メイン変数の説明end * /

EXEC SQL INCLUDE sqlca / * SQL通信領域を定義します* /

/ ************************************************ * *********************** /

Int main(void)/ * C言語のメインプログラムが起動します* /
{{
int count = 0
charがある/ *変数* / yesまたはnoを意味しています
printf( '部門名(CS / MA / IS)を選択してください:')
Scanf( '%s'、deptname)/ *メイン変数deptnameの値を割り当てます* /
EXEC SQL CONNECT TO demin USER
Sa / *接続データベースTEST * /
EXEC SQL DECLARE SX CURSOR FOR / *カーソルを定義します* /
SELECT Sno、Sname、Ssex、Sage / * SX対応のステートメント実行結果* /
学生から
WHERE SDept =:deptname
EXEC SQL OPEN SX / *カーソルSXを開いて、クエリ結果の最初の行をポイントします* /

For()/ *は、ループ構造を使用して、結果セット内のレコードを1つずつ処理します* /
{{
EXEC SQL FETCH SX INTO:HSno、:HSname、:HSsex、:HSage
/ *カーソルを押して、現在のデータをメイン変数に入れます* /
(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)?')/ *学生の年齢を更新するかどうかをユーザーに尋ねます* /
行う{
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
SXの現在の場所
} / *現在のカーソルが指す生徒の年齢を更新します* /
}

EXEC SQL CLOSE SX / *カーソルを閉じるSXはクエリ結果に対応しなくなりました* /
EXEC SQL COMMIT WORK / *更新の送信* /
EXEC SQL DISCONNECT TEST / *データベース接続を切断します* /
}

、使用するMS-DOSプリコンパイル:

1)に入るビンファイルの下:CD C: Program Files Microsoft SQL Server MSSQL Binn

プリコンパイラを呼び出すnsqlprep.exeプログラム:nsqlprep EXEC

コンパイルが正常に完了した結果:

添付資料1を参照

3、使用するVc ++コンパイルします。添付ファイル2を参照してください。

4、ライブラリファイルの追加:エンジニアリング->設定->リンク->オブジェクト/ライブラリモジュール

入力SQLakw32.lib Caw32.lib2つのファイル名。付録3 2つのファイルはスペースで区切られていることに注意してください。 5 ダイナミックリンクライブラリSQLakw32.dll、sqlaiw32.dllファイルをオペレーティングシステムディレクトリの下のサブディレクトリC: WINDOWS system32にコピーします。

6、接続:付録4

7.実行:付録5

添付ファイル1:

添付資料2(VCコンパイルEXEC.C)

添付資料3(構成ライブラリファイルの追加)

付録4(接続)