HOME

ESQL/C (Embedded SQL for C)


  1. ESQLとは
    • SQL Server 専用インターフェイス
    • 「埋め込みSQL」といわれる方法を使う
    • プログラムのソースコード中にSQL命令を直接記述する方法
    • ESQL/Cではプリコンパイルを行い、C言語が理解できるように整形される

  2. イメージ
  3. xxx.sqc

    void main()
    {
        EXEC SQL
    }
    

    ↓プリコンパイル

    xxx.c

    void main()
    {
        sqlExec();
    }
    

  4. 準備
    1. 「nsqlprep.exe」のインストール
    2. Visual Studio plus pack disk2

    3. nsqlprep プリコンパイラのセットアップ
    4. nsqlprepプリコンパイラはコンパイラを使用してヘッダー ファイルを処理する INCLUDE 環境変数に Sqlca.h および Sqlda.h の ESQL/C ヘッダー ファイルが置かれているフル パスを設定します。 また、LIB 環境変数にライブラリ ファイルが置かれているフル パスを設定します

    5. VCVARS32.bat を実行する
    6. "C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.bat"

    7. 環境変数の設定
    8. set INCLUDE=C:\MSSQL7\DevTools\Include;%INCLUDE%
      set LIB=C:\MSSQL7\DevTools\Lib;%LIB%
      

    9. プリコンパイル
    10. E:\lesson\db\sqc>nsqlprep esqltest.sqc
      Microsoft (R) Embedded SQL for C Pre-Compiler. Version 7.00.623.
      Copyright (c) Microsoft Corp 1993-1998. All rights reserved.
      
      Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
      Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
      
      esqltest.sqc
      

    11. コンパイル
    12. E:\lesson\db\sqc>cl -c -G4d -Zi -Od esqltest.c
      Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
      Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
      
      esqltest.c
      

    13. リンク
    14. E:\lesson\db\sqc>link /MAP /DEGUG.full /DEBUGTYPE:both /SUBSYSTEM:console esqlte
      st.obj kernel32.lib libc.lib sqlakw32.lib caw32.lib ntwdblib.lib
      Microsoft (R) Incremental Linker Version 6.00.8447
      Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
      
      LINK : warning LNK4044: オプション "DEGUG.full" は無効です; 無視されます
      C:\MSSQL7\DevTools\Lib\sqlakw32.lib : fatal error LNK1127: ライブラリが壊れています
      
      

    15. 失敗
    16. 失敗してしまいました。なにがいけなかったの!?