タグ

C#とSQLに関するkenjiro_nのブックマーク (4)

  • SQLiteで構造体リストをそのままinsertしたい

    一括挿入によると SQLite には、データを一括挿入するための特別な方法はありません。 データの挿入または更新時に最適なパフォーマンスを得るには、以下を行ってください。 トランザクションの使用。 同じパラメーター化コマンドの再利用。 後続の実行で、最初の実行のコンパイルを再利用します。 と案内されています。 マシン環境が異なるので所要時間が異なりますが、 takemori_kondoさんのコード: 402ms 一括挿入: 230ms 一括挿入からtranをコメントアウト: 243,755ms と愚直にループしてもかなり高速になります。 #if false foreach (var group in list.Select((hv, i) => (hv, i)).GroupBy(x => x.i / 1000)) { using var cmd = conn.CreateCommand()

    SQLiteで構造体リストをそのままinsertしたい
  • LINQ to SQLで複合キーのExists句を書く - modest violet

    単一のExists句を表す場合はContainsを使用していましたが、複数のキーでExistsを実現させねばならない状況に陥ったので、勉強がてらにまとめました。 単一キーのExistsの場合 基となるSQL SELECT * FROM table_A as A WHERE EXISTS ( SELECT * FROM table_B As B WHERE A.Key1 = B.Key1 ) メソッド式(C#) table_A .Select(s => s) .Where(t1 => table_B.Select(t2 = > t2.Key1) .Contains(t1.Key1) ポイントは、table_Bで一致させたい項目をSelectで絞り込んだ結果に対して、Containsを行う点です。 IN句に近いイメージですが、生成されるSQLはEXISTSになります。 複合キーのExistsの

    LINQ to SQLで複合キーのExists句を書く - modest violet
  • DataAdapter からの DataSet の読み込み - ADO.NET

    ADO.NET の DataSet は、データ ソースに依存しない一貫したリレーショナル プログラミング モデルを提供するメモリ常駐型のデータ表現です。 DataSet はテーブル、制約、およびテーブル間のリレーションシップを含む完全なデータのセットを表します。 DataSet はデータ ソースとは独立しているため、 DataSet にはそのアプリケーションに固有のデータと複数のデータ ソースからのデータを含めることができます。 既存のデータ ソースとの対話は DataAdapterによって制御されます。 SelectCommand の DataAdapter プロパティは、データ ソースからデータを取得する Command オブジェクトです。 InsertCommandの UpdateCommand、 DeleteCommand 、 DataAdapter の各プロパティは、 Comma

    DataAdapter からの DataSet の読み込み - ADO.NET
  • 第5回 データセットを使ったレコードの追加

    ADO.NETによるデータベースのアクセスには大きく分けて2つの方法がある。1つは第2回および第3回で解説した.NETデータ・プロバイダによる「接続型」のアクセスである。そしてもう1つがデータセットとデータアダプタによる「非接続型」のアクセスである。前回の第4回では、非接続型のアクセスによりデータベースからレコードを取得した。今回および次回では、非接続型でのデータベース更新について解説する。 データセットによるレコードの取得 データベースの更新を行う前に、前回で解説したデータセットとデータアダプタによるレコードの取得について、次に示すサンプル・プログラムで簡単に復習しておこう。このプログラムでは、MSDEのサンプル・データベースであるpubsデータベースに接続してpublishersテーブルからpub_idカラムとpub_nameカラムについて全レコードを取得し、「publishers」と

    第5回 データセットを使ったレコードの追加
  • 1