ADO.NET
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の内容を一つのグリッ…
知り合いに聞かれたので、ついでにメモメモ。 DataTableを扱っていると、よくソート処理を行った結果を UIなりデータベースなりに登録することがあります。その際、列の値に数値が入っているんだけれども 列の型が文字列であることも、結構あったりします。 …
以前、同じ入門記にてapp.configファイルの中身を暗号化する方法について 記述していました。 ADO.NET入門記-003 (接続文字列の暗号化(aspnet_regiis)) http://d.hatena.ne.jp/gsf_zero1/20070812/p3 よく見たら、暗号化した後に復号化する方法に全然触れて…
以下、自分用のメモです。 SQL Server Compact Edition 3.5を利用しようと思って、ADO.NETから DbProviderFactory経由で接続しようと思ったらエラーが発生しました。 どうも、System.Data.SqlServerCeというプロバイダ名は存在しない模様。 前はこの名前であ…
前回に引き続き、変わり種で今度はテキストファイルに接続してみます。 要領としては、Excelに接続する場合とほぼ同じです。 利用するプロバイダーは以下のものとなります。 System.Data.OleDb 接続文字列は以下のようなパターンをとります。 Provider=Micro…
通常、ADO.NETで処理を書く場合はSQLServerなりOracleなりのデータベースを 対象として処理を行うのですが、Excelにも接続することが出来ます。 Excelの場合、実際は他のライブラリなどを利用して処理をするのが多いですが 知っておくと便利です。 利用する…
非常に興味深い内容が掲示板に投稿されていたのでメモメモ。 特定の条件下において、DataTable.Selectがちゃんと動作していないという件です。 DataTable.Select の結果がおかしい http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/54…
次は、データテーブルのコピー機能についてです。 これも、よく利用するのでメモメモ。 データテーブルのコピー機能には、以下の2種類があります。 スキーマのみのコピー スキーマとデータのコピー スキーマのみのコピーには、以下のメソッドを利用します。 …
続いて、Selectメソッドです。 このメソッドは、特定の条件に合致する行を抽出する際に利用します。 たまに使うこともあるので、一応メモです。 しかし、このSelectメソッドはDataTableの行数が多い場合には 少し遅いので、あまり乱用は禁物です。とはいえ、…
過去の分は以下のリンクから見れます。 ADO.NET入門記-014 (System.Data.DataTableついて(01) (DataTable, DataRow, DataColumn)) http://d.hatena.ne.jp/gsf_zero1/20070920/p1 てか、2年位ほったらかしてましたww こないだ、ふいにDataTableの処理を書…
.NET Framework 3.5より、System.Data.DataSetExtensions名前空間に以下のクラスが追加されています。 System.Data.DataRowComparer 名前の通り、DataRow用のComparerです。 これまで、DataRowを比較する場合は各列の値を全て手動で見て一致か不一致か否かを…
前回に引き続き、今回はDataRowに用意された拡張メソッドについて記述します。 .NET Framework 3.5になって、DataRowに以下の拡張メソッドが用意されました。 * Field * SetField 尚、これらの拡張メソッドは、System.Data.DataRowExtensionsクラスに定義さ…
.NET Framework 3.5になって、DataTableに以下の拡張メソッドが用意されました。 AsDataView AsEnumerable CopyToDataTable 尚、これらの拡張メソッドは、System.Data.DataTableExtensionsクラスに定義されています。 厳密にはCopyToDataTableメソッドはIEnu…
以下、メモ書き。DataTable, DataSetには、別のDataTable, DataSetのデータを取り込めるMergeメソッドがあります。 その際、元のテーブルにあった行のRowStateはどうなるかというと、そのまま引き継がれます。つまり、元がAddedの場合はAddedで、Deletedの場…
データを扱っていると、たまに処理上重複データを取り除いたりする必要があったります。 SQLでデータを取得する場合は、事前にdistinctするなどできますが、内部で作成したデータの 場合はそうもいきません。 そんな時、DataViewを使うと楽な場合があります…
直でSQLを記述してデータを検索したりする場合は、通常以下の手順を踏みます。 コマンドオブジェクトを作成 コマンドにSQLを設定 コマンドにパラメータを設定 実行 よくあるのが、SQLは違うけど指定するパラメータオブジェクトは同じものを再利用する場合で…
ADO.NETにてDbProviderFactoryオブジェクトを用いて、処理を行なう場合、まずDbProviderFactoriesから 該当するInvariantNameを持つデータプロバイダファクトリオブジェクトを取得します。 コードでいうと以下のような感じです。(オラクル用のデータプロバ…
ADO.NETにて一旦Deletedとマークされた行からデータを取得しようとすると通常エラーがでます。 それを回避するためには以下のようにします。 カラムの値を取得する際にDataRowVersion.Originalを指定する。 要は削除前の値として取得するようにするという事…
今回から、数回に分けてSystem.Data.DataTableクラスについて 記述していきます。 既にずっと前から、暗黙的に使用されてきているクラスですが、やはりADO.NETを勉強する上で かかせないクラスとなりますので、一つ一つメソッドを使用してみようと思います。…
データテーブルを使用する上で、行の状態の遷移はとても大事な概念となります。 DataAdapterのUpdateメソッドは、上記の状態を元にその行のデータをInsertするのかUpdateするのか Deleteするのかを決定します。 以下、DataRowStateについての簡単なサンプル…
DataSetには、リレーションを設定することができます。 リレーションを設定すると、データベースのように紐付くデータを取得したり、親の行を取得したり出来るようになります。 やり方は簡単で、データセットオブジェクトのRelationsプロパティに対して追加…
前回の記事 http://d.hatena.ne.jp/gsf_zero1/20070906/p2 にて、データセットにXMLデータを流し込むのは やっているのですが、一応別記事にしました。 DataSetやDataTableにはXMLからデータを取得するメソッドが用意されています。 スキーマを読み込むには…
同じく嵌りました・・・・。 コピーされているのに気づくのに凄く時間がかかりましたです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のみを作成し、それ以外の変更系のコマンドについて…
引き続き、データアダプタに関しての記事です。 今回は、変更系の処理を行なってみます。 変更系となると、Insert, Update, Deleteの3つが存在するのですが、 これらもSelectの場合と同じく、コマンドオブジェクトを作成し、データアダプタにセットします。…
DataAdapterクラスは、ADO.NETにおいて接続型オブジェクト(DataReader等)と非接続型オブジェクト(DataSet, DataTable) の橋渡しを行なう為のクラスです。 このクラスを利用すると、クエリの結果をデータテーブル及びデータセットに簡単に取り込めるようにな…
System.Transactions.TransactionScopeクラスを利用する際に、トランザクションのタイムアウトを指定するには 以下の方法があります。 machine.configに指定。 コンストラクタにて、指定。 今回は、2の方法でやってみます。 指定する値は、TimeSpanオブジェ…
以下のような状況があるとします。”あるデータテーブルAとデータテーブルBが存在しており、この2つのデータテーブルはどちらも同じ型である。 その際、テーブルAからテーブルBへ特定の条件にマッチした行データ(DataRow)を移行したい。” つまり、以下のよう…
Oracle(10gR2)でTransactionScopeを利用する際に、以下のエラーがでる場合があります。 "oramts.dllが見つかりません。" このエラーが出た場合、以下の点を疑ってみてください。 マシンに、Oracle Services For Microsoft Transaction Service (OraMTS)がイ…
SQL Serverに関してのみのやり方ですが、SQL Serverの場合は、コマンドの非同期実行の仕組みがSqlCommandオブジェクトに 用意されています。System.Data.OracleClient等には、同じ機能は存在しませんのでご注意を。 非同期実行のやり方は、delegateの非同期…