C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.31890 の関連記事表示

<< 0 >>
■31890  ADO.NETでのDB接続やINSERTについて
□投稿者/ toro2 -(2009/01/29(Thu) 19:02:49)

    分類:[C#] 

    ADO.NETの初心者です。
    @itなどを参考にDB接続などのプログラムを作成していますが、
    いまいちよくわかりません。
    (C# PostgreSQL)

    個別に処理する部分等はわかるのですが、実際の処理方法がピンと
    こないというのが現実です。

    やりたいことは

    1.1行ずつテキスト(複数)を読み込んでそれをDBに大量にINSERTする。
    2.パラメータを使って処理したい。

    です。

    ADO,NETは非接続型であるのは理解しましたが、よくある部分で
    INSERTしたら接続を切断していますが、そのようなものですか?

    また、DataAdapterクラスを使って、パラメータを使用して、
    テーブルなどで一気にINSERTしたいと思っていましたが、これは最初に
    必ずselectでその該当のテーブルを全部取得しないといけないのでしょうか?
    何か簡単なプログラムを提供していただけると助かります。
    よろしくお願いします。
親記事 /過去ログ57より / 関連記事表示
削除チェック/

■31919  Re[1]: ADO.NETでのDB接続やINSERTについて
□投稿者/ まさる -(2009/01/30(Fri) 10:33:44)
>
    2009/01/30(Fri) 10:40:38 編集(投稿者)

    あ、勘違いしていたみたいです。ごめんなさい。

    1. テキストから1行(または必要な行数)読み込む。
    2. 1のデータを元にINSERT用のDbCommand(PostgreSQL用のデータプロバイダを使っていれば別の名前です)を組み立てる。
    3. 2のDbCommandのExecuteNonQueryメソッドを実行する。
    4. 対象データがなくなるまで、1〜3を繰り返す

    といった感じだと思います。

    以下は忘れてください。
    ---
    やりたいことの意図がいまいち読み取れません。

    1.パラメータで条件を指定し、データを抽出。
    2.抽出したデータを元にINSERT処理

    ということでしょうか?

    であるならば、DataReaderを使った逐次処理の方が、DataAdapterなどを使ってまとめてデータを取ってくるよりは効率的だと思われます。

    処理の流れとしては、

    1.Connectionオープン
    2.Connection.CreateCommand()でSelectCommand作成
    3.作ったSelectCommandにデータ抽出用のSELECT文を設定。
     ここで、パラメータも指定する。
    4.SelectCommand.ExecuteReader()でDataReader取得
    5.DataReader.Read()でデータを読み込む
    6.Connection.CreateCommand()でInsertCommand作成
    7.InsertCommandに、DataReaderの読み込み結果を元に、INSERT文とパラメータ指定
    8.InsertCommand.ExecuteNonQuery()を実行しデータを登録
    9.読み取り可能なデータがなくなるまで、5〜8を繰り返す

    といった流れになるかと思います。

    http://msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqldatareader%28VS.80%29.aspx

    を参考にしてください。SQL Server用の説明になってますが、PostgreSQL用のものでも考え方は変わらないはずです。

    No31890 (toro2 さん) に返信
    > ADO.NETの初心者です。
    > @itなどを参考にDB接続などのプログラムを作成していますが、
    > いまいちよくわかりません。
    > (C# PostgreSQL)
    >
    > 個別に処理する部分等はわかるのですが、実際の処理方法がピンと
    > こないというのが現実です。
    >
    > やりたいことは
    >
    > 1.1行ずつテキスト(複数)を読み込んでそれをDBに大量にINSERTする。
    > 2.パラメータを使って処理したい。
    >
    > です。
    >
    > ADO,NETは非接続型であるのは理解しましたが、よくある部分で
    > INSERTしたら接続を切断していますが、そのようなものですか?
    >
    > また、DataAdapterクラスを使って、パラメータを使用して、
    > テーブルなどで一気にINSERTしたいと思っていましたが、これは最初に
    > 必ずselectでその該当のテーブルを全部取得しないといけないのでしょうか?
    > 何か簡単なプログラムを提供していただけると助かります。
    > よろしくお願いします。
記事No.31890 のレス /過去ログ57より / 関連記事表示
削除チェック/

■31945  Re[1]: ADO.NETでのDB接続やINSERTについて
□投稿者/ はつね -(2009/01/30(Fri) 11:54:48)
>
    No31890 (toro2 さん) に返信
    > ADO,NETは非接続型であるのは理解しましたが、よくある部分で
    > INSERTしたら接続を切断していますが、そのようなものですか?

    INSERTしたら接続を切断ではなく、あるアクションに関連する変更を行ったら切断ですね。
    今回の場合「DB接続を行って、テキストファイルを指定してそれを1行づつ読み込みながらINSERTしてすべての行が処理し終わったら、DB接続を切断」になると思います。


    > また、DataAdapterクラスを使って、パラメータを使用して、
    > テーブルなどで一気にINSERTしたいと思っていましたが、

    DataAdapterクラスを使う場合、その前にDataSetに対して値をINSERTしておかなくてはなりません。
    値をINSERTするためには、事前にDataSetにテーブルのコピーを保持しておく必要があります。
    保持しないと既にテーブルにあるレコードをINSERTしようとして失敗します。
    # 常にからのテーブルに行い、なおかつ、必ず1箇所から行うなら事前にDatasetに保持は不要でしょうけれど。

記事No.31890 のレス /過去ログ57より / 関連記事表示
削除チェック/

■32393  Re[2]: ADO.NETでのDB接続やINSERTについて
□投稿者/ toro2 -(2009/02/05(Thu) 22:29:32)
    ごめんなさい。返信したつもりで忘れていました。

    返信していただいたまさる さん、はつね さんありがとうございました。

    まだまだかなりの初心者なのですが、やってみます。
記事No.31890 のレス / END /過去ログ57より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -