- PR -

OleDbDataAdapterを使用してAccessMDBのデータをDataSetに作成

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/05/16
投稿数: 4
投稿日時: 2007-10-25 13:12
OleDbDataAdapterを使用してAccess MDBのデータをDataSet作成しています。
以下のSelect文を使用してAccess MDBのデータを取得しているのですが、

FROM句で構文エラーが発生してしまいます。

似たようなSelect文では、正常に動作しているのですが、
ご教授お願いします。

From句でエラーになるelect文
Command_string = "select a.LogicalEntityName from entity a" +
" inner join (select EntityId from column where ColumnId = 1) b " +
" on a.EntityId = b.EntityId;";


正常に動作するSelect文
Command_string = "select a.LogicalEntityName from entity a" +
" inner join (select EntityId from control where Mark = '1') b " +
" on a.EntityId = b.EntityId;";

以下コード
↓↓↓↓↓↓↓↓↓↓↓
string sDbFile = "C:\\テスト.mdb";

Conn_MDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source= " + DbFile + ";";

System.Data.OleDb.OleDbDataAdapter Data_Adapter;

DataSet DataSet = new DataSet("TEST");

Data_Adapter = new System.Data.OleDb.OleDbDataAdapter(Command_string, Conn_MDB);
Data_Adapter.Fill(DataSet, "TEST");←ここでエラーとなる
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-10-25 13:29
引用:

未記入さんの書き込み (2007-10-25 13:12) より:

From句でエラーになるelect文
Command_string = "select a.LogicalEntityName from entity a" +
" inner join (select EntityId from column where ColumnId = 1) b " +
" on a.EntityId = b.EntityId;";

正常に動作するSelect文
Command_string = "select a.LogicalEntityName from entity a" +
" inner join (select EntityId from control where Mark = '1') b " +
" on a.EntityId = b.EntityId;";


SQL コマンドに MDB の予約語が含まれていませんか? 何にしても、例外の詳細を書いた方が良いと思います。

それと、SQL コマンドはパラメータ クエリを使って組み立ててください。 ひょっとすると今回はわかりやすくするためにすべて文字列にして頂いたのかもしれませんが、それなら逐語的リテラルを使用することをお勧めします。 文字列結合がない方が見やすいですから。

コード:

    string commandText = (@"
        SELECT
            E.LogicalEntityName,
        FROM
            Entity E
        WHERE
            E.EntityId = 1
    ");


こんな感じで書くことができます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2007/05/16
投稿数: 4
投稿日時: 2007-10-25 14:18
じゃんぬねっとさん

返信ありがとうございます。予約語を調査したところ
Column は予約語になっていました・・・・
予約語は変数などに使用できないのですね!?

あと、SQLコマンドにそのような書き方があったのですね・・・
大変勉強になりました。
当方、まだC#を始めて1ヶ月もたっていませんのでまだまだ勉強中の身なのです。

本当にありがとうございました
未記入
会議室デビュー日: 2007/05/16
投稿数: 4
投稿日時: 2007-10-25 14:18
じゃんぬねっとさん

返信ありがとうございます。予約語を調査したところ
Column は予約語になっていました・・・・
予約語は変数などに使用できないのですね!?

あと、SQLコマンドにそのような書き方があったのですね・・・
大変勉強になりました。
当方、まだC#を始めて1ヶ月もたっていませんのでまだまだ勉強中の身なのです。

本当にありがとうございました
未記入
会議室デビュー日: 2007/05/16
投稿数: 4
投稿日時: 2007-10-25 14:18
じゃんぬねっとさん

返信ありがとうございます。予約語を調査したところ
Column は予約語になっていました・・・・
予約語は変数などに使用できないのですね!?

あと、SQLコマンドにそのような書き方があったのですね・・・
大変勉強になりました。
当方、まだC#を始めて1ヶ月もたっていませんのでまだまだ勉強中の身なのです。

本当にありがとうございました
1

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