- PR -

.NETで埋め込みSQL

投稿者投稿内容
sand
大ベテラン
会議室デビュー日: 2007/01/15
投稿数: 247
投稿日時: 2007-06-04 23:00
VB.NETやC#で埋め込みSQLって使えるのでしょうか?ODBCは動的SQLのため無理、ADOやDAO、ADO.NETは動的SQL、静的SQL。
静的SQLなら埋め込みSQLは可能?
調べたのですがなかなか情報が見つからず投稿させていただきました。
MIZUKID
会議室デビュー日: 2007/05/11
投稿数: 6
お住まい・勤務地: VBとSQLの袋小路
投稿日時: 2007-06-05 10:07
おはようございます。MIZUKIDです。

VB.NETは使ったことが無いので正確ではないですが、C#で使うことが出来るので可能だと思います。

形式的には通常のSQL文をそのまま記述するような形になりますが

--------------------------
string myConnectionString = "Initial Catalog = データベース名;"
              + "DataSource = サーバー(パソコン?)名;"
              + "Integrated Security = SSPI;";

string mySelectQuery = "UPDATE tbl_mCustomer SET" +
              "フィールド名 = '" + 入れたい値 +

              "WHERE" +
              "フィールド名 = " + 条件の値;

--------------------------
こんな感じで。
データベース名は、MySQLとかSQLserverとかではなくてテーブルを格納しているデータベースの名前になります。
SSPIはパスワード認証方法の一つだったと記憶しています。
UpDate文を例に挙げていますが、少なくともC#では他のSQLでも同様の記述で扱うことが出来ました。

自分はmySelectQueryにSQLを格納して使用する、という認識で扱っています。
尚、SQLを使用するためには使用するDBに合わせたSystemをusingする必要があるはずです。
C# SQL などで検索してみると何件か見付かると思われますので調べてみてください。

[修正]
忘れてた・・・
自分はSQLserverをC#で記述、しかしたことが無いので静的・動的については詳しくないです。
たしかADO.NETを使用していたはず。
[/修正]


#間違っている部分などありましたら、訂正お願いいたします。

[ メッセージ編集済み 編集者: MIZUKID 編集日時 2007-06-05 10:13 ]
YASUYOKA
ベテラン
会議室デビュー日: 2007/03/19
投稿数: 71
投稿日時: 2007-06-05 10:11
引用:

sandさんの書き込み (2007-06-04 23:00) より:
VB.NETやC#で埋め込みSQLって使えるのでしょうか?ODBCは動的SQLのため無理、ADOやDAO、ADO.NETは動的SQL、静的SQL。



RDBMSは何を使用していますか?
Oracleならば、ODP.NETで埋め込み(ストアド)が可能です。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-06-05 10:19
埋め込みって、コードの中に直接SQLを書くという意味じゃないんですか?
コード:

int i;
abc.F();
if(xxx){
EXEC UPDATE def SET ghi = jkl WHERE mno = 0;
}


みたいな。

NetCOBOLマジお勧め。

[ メッセージ編集済み 編集者: 一郎 編集日時 2007-06-05 10:20 ]
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-06-05 13:24
SQLではないけど、DLINQ に埋め込みっぽい雰囲気があるかもしれませんね。
私はまだ試したことすらないですが。

---追記-------------------------------------
http://d.hatena.ne.jp/okazuki/20070423/1177339578
こちらのページが具体例が出てて分かりやすかったです。

[ メッセージ編集済み 編集者: かめたろ 編集日時 2007-06-05 15:23 ]
忠犬
大ベテラン
会議室デビュー日: 2006/05/01
投稿数: 109
投稿日時: 2007-06-05 14:42
埋め込みSQLというのは、プログラムソース中に文字列でSQLを与えるのでなく、
他の命令文と同様に直接SQLを直接、書く方法ですけど?

コード:
EXEC SQL SQL文 ;



という構文です。


Cだと、こんな感じ。
コード:
  for (i = 0; i < 10; i++)
    {
      EXEC SQL INSERT INTO hoge VALUES (:i, 'aaa');
      if (memcmp (sqlca.sqlstate, "00", 2) != 0)
        {
          fprintf (stderr, "%s\\\\n", sqlca.sqlerrm.sqlerrmc);
          EXEC SQL ROLLBACK;
          goto END;
        }
    }




COBOLだと、こんな感じ。
コード:
    EXEC SQL
     DECLARE CR1 CURSOR FOR
      SELECT CLMA,CLMB FROM TBL1
       WHERE CLMA>=:XPARM
       ORDER BY CLMA
    END-EXEC.

    EXEC SQL WHENEVER SQLERROR GO TO ERR--PROC END-EXEC.

*   SQLの静的実行(カーソル操作例)
    MOVE  'ABC'    TO  XPARM.
    EXEC SQL OPEN CR1          END-EXEC.
    PERFORM TEST BEFORE
     UNTIL SQLCODE NOT = ZERO 
      EXEC SQL
       FETCH CR1 INTO :XCLMA,:XCLMB 
      END-EXEC
      IF SQLCODE = ZERO
       データ検索時の処理
       END-IF
    END-PERFORM.
    IF SQLCODE = 100
     EXEC SQL CLOSE CR1          END-EXEC
    END-EXEC.

かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-05 14:50
Pro*C や Pro*COBOL の .NET 版があるのかということを聞きたい?
だとしたら無いです。
_________________
かるあ のメモスニペット
sand
大ベテラン
会議室デビュー日: 2007/01/15
投稿数: 247
投稿日時: 2007-06-18 03:13
が〜ん。残念。あきらめます。

引用:

かるあさんの書き込み (2007-06-05 14:50) より:
Pro*C や Pro*COBOL の .NET 版があるのかということを聞きたい?
だとしたら無いです。


スキルアップ/キャリアアップ(JOB@IT)