読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

ADO.NET

ADO.NET入門記-032 (JoinViewを利用して結合表データを表示)(結合ビュー, 複数の表データ, DataSet, DataTable)

DevExpressのKnowledge Baseを見ていたら、以下の内容がありました。 Can the grid display data from several data tables in a single grid view? http://www.devexpress.com/Support/Center/KB/p/A1232.aspx 内容は、複数のDataTableの内容を一つのグリッ…

ADO.NET入門記-031 (DataTableにて文字列値の列を数値ソートする)

知り合いに聞かれたので、ついでにメモメモ。 DataTableを扱っていると、よくソート処理を行った結果を UIなりデータベースなりに登録することがあります。その際、列の値に数値が入っているんだけれども 列の型が文字列であることも、結構あったりします。 …

ADO.NET入門記-030 (暗号化されたapp.configのデータを復号化, aspnet_regiis, -pef, -pdf)

以前、同じ入門記にてapp.configファイルの中身を暗号化する方法について 記述していました。 ADO.NET入門記-003 (接続文字列の暗号化(aspnet_regiis)) http://d.hatena.ne.jp/gsf_zero1/20070812/p3 よく見たら、暗号化した後に復号化する方法に全然触れて…

ADO.NET入門記-029 (SQL Server Compact Edition 3.5, System.Data.SqlServerCe.3.5, DbProviderFactory)

以下、自分用のメモです。 SQL Server Compact Edition 3.5を利用しようと思って、ADO.NETから DbProviderFactory経由で接続しようと思ったらエラーが発生しました。 どうも、System.Data.SqlServerCeというプロバイダ名は存在しない模様。 前はこの名前であ…

ADO.NET入門記-028 (テキストファイルに接続してデータを取得・追加)(text,OleDb,HDR,Extended Properties,FMT,Delimited)

前回に引き続き、変わり種で今度はテキストファイルに接続してみます。 要領としては、Excelに接続する場合とほぼ同じです。 利用するプロバイダーは以下のものとなります。 System.Data.OleDb 接続文字列は以下のようなパターンをとります。 Provider=Micro…

ADO.NET入門記-027 (Excelに接続してデータを取得・追加・更新)(Excel,OleDb,HDR,Extended Properties,xlsx)

通常、ADO.NETで処理を書く場合はSQLServerなりOracleなりのデータベースを 対象として処理を行うのですが、Excelにも接続することが出来ます。 Excelの場合、実際は他のライブラリなどを利用して処理をするのが多いですが 知っておくと便利です。 利用する…

ADO.NET入門記-026 (DataTable.Selectのバグ??奇妙な動作)(DataTable.Select)

非常に興味深い内容が掲示板に投稿されていたのでメモメモ。 特定の条件下において、DataTable.Selectがちゃんと動作していないという件です。 DataTable.Select の結果がおかしい http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/54…

ADO.NET入門記-025 (System.Data.DataTableについて(04) (スキーマとデータのコピー) (DataTable, Clone, Copy))

次は、データテーブルのコピー機能についてです。 これも、よく利用するのでメモメモ。 データテーブルのコピー機能には、以下の2種類があります。 スキーマのみのコピー スキーマとデータのコピー スキーマのみのコピーには、以下のメソッドを利用します。 …

ADO.NET入門記-024 (System.Data.DataTableについて(03) (行の抽出) (DataTable, Select))

続いて、Selectメソッドです。 このメソッドは、特定の条件に合致する行を抽出する際に利用します。 たまに使うこともあるので、一応メモです。 しかし、このSelectメソッドはDataTableの行数が多い場合には 少し遅いので、あまり乱用は禁物です。とはいえ、…

ADO.NET入門記-023 (System.Data.DataTableについて(02) (DataTable内で計算) (DataTable, Compute))

過去の分は以下のリンクから見れます。 ADO.NET入門記-014 (System.Data.DataTableついて(01) (DataTable, DataRow, DataColumn)) http://d.hatena.ne.jp/gsf_zero1/20070920/p1 てか、2年位ほったらかしてましたww こないだ、ふいにDataTableの処理を書…

ADO.NET入門記-022 (DataRow同士の比較)(System.Data.DataRowExtensions, SequenceEqual, All, AsEnumerable)

.NET Framework 3.5より、System.Data.DataSetExtensions名前空間に以下のクラスが追加されています。 System.Data.DataRowComparer 名前の通り、DataRow用のComparerです。 これまで、DataRowを比較する場合は各列の値を全て手動で見て一致か不一致か否かを…

ADO.NET入門記-021 (DataRowに追加された拡張メソッド)(System.Data.DataRowExtensions, Field, SetField)

前回に引き続き、今回はDataRowに用意された拡張メソッドについて記述します。 .NET Framework 3.5になって、DataRowに以下の拡張メソッドが用意されました。 * Field * SetField 尚、これらの拡張メソッドは、System.Data.DataRowExtensionsクラスに定義さ…

ADO.NET入門記-020 (DataTableに追加された拡張メソッド)(System.Data.DataTableExtensions, AsEnumerable, CopyToDataTable)

.NET Framework 3.5になって、DataTableに以下の拡張メソッドが用意されました。 AsDataView AsEnumerable CopyToDataTable 尚、これらの拡張メソッドは、System.Data.DataTableExtensionsクラスに定義されています。 厳密にはCopyToDataTableメソッドはIEnu…

ADO.NET入門記-019 (MergeとImportRowの場合のRowStateの違い)(DataTable, Merge, ImportRow, RowState)

以下、メモ書き。DataTable, DataSetには、別のDataTable, DataSetのデータを取り込めるMergeメソッドがあります。 その際、元のテーブルにあった行のRowStateはどうなるかというと、そのまま引き継がれます。つまり、元がAddedの場合はAddedで、Deletedの場…

ADO.NET入門記-018 (DataViewを用いた重複行の取り除き)(DataTable, DataView, ToTable, distinct)

データを扱っていると、たまに処理上重複データを取り除いたりする必要があったります。 SQLでデータを取得する場合は、事前にdistinctするなどできますが、内部で作成したデータの 場合はそうもいきません。 そんな時、DataViewを使うと楽な場合があります…

ADO.NET入門記-017 (DbParameterオブジェクトを再利用する際の注意点)(DbParameter, DbCommand)

直でSQLを記述してデータを検索したりする場合は、通常以下の手順を踏みます。 コマンドオブジェクトを作成 コマンドにSQLを設定 コマンドにパラメータを設定 実行 よくあるのが、SQLは違うけど指定するパラメータオブジェクトは同じものを再利用する場合で…

ADO.NET入門記-016 (データプロバイダファクトリの手動追加について)(machine.config, app.config, system.data, DbProviderFactories)

ADO.NETにてDbProviderFactoryオブジェクトを用いて、処理を行なう場合、まずDbProviderFactoriesから 該当するInvariantNameを持つデータプロバイダファクトリオブジェクトを取得します。 コードでいうと以下のような感じです。(オラクル用のデータプロバ…

ADO.NET入門記-015 (Deletedとマークされた行からデータを取得する)

ADO.NETにて一旦Deletedとマークされた行からデータを取得しようとすると通常エラーがでます。 それを回避するためには以下のようにします。 カラムの値を取得する際にDataRowVersion.Originalを指定する。 要は削除前の値として取得するようにするという事…

ADO.NET入門記-014 (System.Data.DataTableついて(01) (DataTable, DataRow, DataColumn))

今回から、数回に分けてSystem.Data.DataTableクラスについて 記述していきます。 既にずっと前から、暗黙的に使用されてきているクラスですが、やはりADO.NETを勉強する上で かかせないクラスとなりますので、一つ一つメソッドを使用してみようと思います。…

ADO.NET入門記-013 (DataRow.RowStateの遷移について (DataTable, DataRow, DataRowState))

データテーブルを使用する上で、行の状態の遷移はとても大事な概念となります。 DataAdapterのUpdateメソッドは、上記の状態を元にその行のデータをInsertするのかUpdateするのか Deleteするのかを決定します。 以下、DataRowStateについての簡単なサンプル…

ADO.NET入門記-011 (DataRelationの利用 (DataSet, DataTable, DataRelation, ReadXmlSchema, ReadXml, GetChildRows, GetParentRow))

DataSetには、リレーションを設定することができます。 リレーションを設定すると、データベースのように紐付くデータを取得したり、親の行を取得したり出来るようになります。 やり方は簡単で、データセットオブジェクトのRelationsプロパティに対して追加…

ADO.NET入門記-012 (DataSetにてXMLデータを扱う (DataSet, DataTable, ReadXmlSchema, ReadXml, xsd))

前回の記事 http://d.hatena.ne.jp/gsf_zero1/20070906/p2 にて、データセットにXMLデータを流し込むのは やっているのですが、一応別記事にしました。 DataSetやDataTableにはXMLからデータを取得するメソッドが用意されています。 スキーマを読み込むには…

DataTable.GetChangedの動き

同じく嵌りました・・・・。 コピーされているのに気づくのに凄く時間がかかりましたですw DataTable.GetChanges() (From 窓際プログラマーの独り言さん) http://blog.livedoor.jp/gushwell/archives/10304816.html

ADO.NET入門記-010 (CommandBuilderの使用(Insert,Update,Delete) (CommandBuilder, DataAdapter, Fill, Update))

前回は、手動で各変更系のコマンドオブジェクトを作成していましたが、ADO.NETにはCommandBuilderという クラスが存在しており、それを使用することにより以下の効果を得ることが出来ます。 SelectCommandのみを作成し、それ以外の変更系のコマンドについて…

ADO.NET入門記-009 (DataAdapterの使用(Insert,Update,Delete) (AcceptChanges, DbDataAdapter, Fill, Update, InsertCommand, UpdateCommand, DeleteCommand))

引き続き、データアダプタに関しての記事です。 今回は、変更系の処理を行なってみます。 変更系となると、Insert, Update, Deleteの3つが存在するのですが、 これらもSelectの場合と同じく、コマンドオブジェクトを作成し、データアダプタにセットします。…

ADO.NET入門記-008 (DataAdapterの使用(Select) (DbDataAdapter, Fill, SelectCommand))

DataAdapterクラスは、ADO.NETにおいて接続型オブジェクト(DataReader等)と非接続型オブジェクト(DataSet, DataTable) の橋渡しを行なう為のクラスです。 このクラスを利用すると、クエリの結果をデータテーブル及びデータセットに簡単に取り込めるようにな…

TransactionScopeのタイムアウト設定 (TransactionScope, TransactionScopeOption, TimeSpan)

System.Transactions.TransactionScopeクラスを利用する際に、トランザクションのタイムアウトを指定するには 以下の方法があります。 machine.configに指定。 コンストラクタにて、指定。 今回は、2の方法でやってみます。 指定する値は、TimeSpanオブジェ…

同じデータテーブル間で行データを移行する方法 (DataTable, DataRow, AcceptChanges, LoadDataRow, ItemArray)

以下のような状況があるとします。”あるデータテーブルAとデータテーブルBが存在しており、この2つのデータテーブルはどちらも同じ型である。 その際、テーブルAからテーブルBへ特定の条件にマッチした行データ(DataRow)を移行したい。” つまり、以下のよう…

OracleでTransactionScopeを使用する際の注意点 (System.Data.OracleClient.OracleConnection, oramts, TransactionScope)

Oracle(10gR2)でTransactionScopeを利用する際に、以下のエラーがでる場合があります。 "oramts.dllが見つかりません。" このエラーが出た場合、以下の点を疑ってみてください。 マシンに、Oracle Services For Microsoft Transaction Service (OraMTS)がイ…

ADO.NET入門記-007 (コマンドの非同期実行(System.Data.SqlClient.SqlCommand,BeginExecuteReader,EndExecuteReader))

SQL Serverに関してのみのやり方ですが、SQL Serverの場合は、コマンドの非同期実行の仕組みがSqlCommandオブジェクトに 用意されています。System.Data.OracleClient等には、同じ機能は存在しませんのでご注意を。 非同期実行のやり方は、delegateの非同期…

ADO.NET入門記-005 (接続型のデータの読み取り(IDbCommand, DbCommand, ExecuteScalar, ExecuteReader))

ADO.NETには、2種類のタイプがあります。 一つは、接続型。つまり、コネクションを開いた状態でデータの読み取りなどを行なうパターン。 もう一つは、非接続型。データのやり取りを行なう時のみコネクションを開いていて、データを読み取り、 コネクションと…

ADO.NET入門記-006 (Insert,Update,Deleteの発行(DbCommand, DbParameter, TransactionScope))

前回は、Selectの発行をやってみましたので今回はInsert,Update,Deleteという所謂データの変更を行なう SQLを発行してみます。 とはいっても、基本はSelectの時とほぼ同じです。 DbConnectionからDbCommandを作成し、CommandオブジェクトのCommandTextプロパ…

ADO.NET入門記-001 (コネクションの確立及び解放)

現在ADO.NET 2.0を勉強しているので、その過程をちょこちょこメモしていこうと 思っております。見た目は簡単ですが、やってみると結構ややこしいADO.NET絡み。 実務では必須の知識になるので、いろいろメモしていきたいなと思います。 今回は、もっとも基本…

ADO.NET入門記-002 (ConnectionStringSettingsを用いて接続文字列を取得)

ADO.NET 2.0より、System.Configuration名前空間に以下のクラスが追加されています。 System.Configuration.ConfigurationManager このクラスは、マシン構成情報(machine.config)とアプリケーション構成情報(app.config)にアクセスする事が 出来るクラスです…

ADO.NET入門記-003 (接続文字列の暗号化(aspnet_regiis))

通常、GUIツールを使用しても手動で接続文字列を書いても、接続文字列自体は プレーンテキストとなります。でも、このままではセキュリティ上駄目な場合が 多いです。その場合は、暗号化という手段をとるのですが、app.configファイルを 使用している場合は…

ADO.NET入門記-004 (コネクションプーリングをする場合としない場合の速度差)

.NETフレームワークに最初から登録されているデータプロバイダは、接続する際デフォルトで コネクションプーリングがONの状態となります。これを明示的にプーリングしないようにするには 接続文字列に以下のように設定します。(SQL Server及びOracleの場合。…

DbProviderFactoryを用いてのデータベース接続の確立(System.Data.Common.DbProviderFactory, machine.config)

ADO.NET2.0から、DbProviderFactoryクラスが追加され、それに伴い 各接続型オブジェクトがファクトリメソッド経由で生成できるようになっています。 DbProviderFactoryオブジェクトは、DbProviderFactoriesクラスからGetFactoryメソッド経由で 取得するよう…