dotnet:dataset

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
dotnet:dataset [2009/01/21 11:20] nakayamadotnet:dataset [2019/05/18 02:23] (現在) – 外部編集 非ログインユーザー
行 1: 行 1:
 ====== DataSet クラス (System.Data) ====== ====== DataSet クラス (System.Data) ======
 +===== XMLの読み込み/書き込み =====
 +[C#]
 +<code csharp>
 +// 読み込み対象ファイルパス
 +string fileName = @"c:\xmlDataSet.xml";
 +// XMLファイルの読み込み
 +xmlDataSet.ReadXml(fileName);
 +</code>
 +
 +[C#]
 +<code csharp>
 +// 書き込み対象ファイルパス
 +string fileName = @"c:\xmlDataSet.xml";
 +// XMLファイルの書き込み
 +xmlDataSet.WriteXml(fileName);
 +</code>
 +
 +===== 未知のXML形式から型付データセット用にXSDを生成 =====
 +[C#]
 +<code csharp>
 +// 未知のXML形式ファイルパス
 +string xmlFileName = @"c:\xmlDataSet.xml";
 +// XSDファイルパス
 +string xsdFileName = @"c:\xmlDataSet.xsd";
 +// XMLファイルの読み込み
 +xmlDataSet.ReadXml(xmlFileName );
 +// XSDファイルの書き込み
 +xmlDataSet.WriteXmlSchema(xsdFileName);
 +</code>
 +XSDファイルは Visual Studio にドラッグアンドドロップすることで型付データセットを生成できる。\\
 +また、型付データセット内の余分な DataTable を削除して、型付データセットを利用して ReadXml() を行うことで、余分なテーブルデータをスキップしてXMLファイルを読み込むことができる。
 +
 ===== DataTableのソート ===== ===== DataTableのソート =====
 + DataTableのソートは、DataViewのSort機能を利用して行うことができる。しかし、型付DataSetの場合は、DataViewによってソートを行いToTable()メソッドで結果を得ようとすると、ToTable()メソッドはDataTable型を返却するため、ソートを行った以降の処理で型付DataSetによって自動生成されたコードの恩恵を受けられなくなってしまう。\\
 +\\
 + ここでは、ジェネリックメソッドを実装して、型付DataSetのDataTableを型付のままソートする方法を紹介する。\\
 +\\
 +[VB]
 +<code vbnet>
 +Imports System
 +Imports System.Data
 +
 +Module SampleAppVB
 +    Public Function SortTable(Of T As DataTable)( _
 +        ByVal source As T, ByVal expression As String) As T
 +
 +        ' データテーブルのコピーを作成
 +        Dim dest As T = CType(source.Clone(), T)
 +
 +        ' ソートされたデータビューの作成
 +        Dim dv As DataView = New DataView(source)
 +        dv.Sort = expression
 +
 +        ' ソートされたレコードのコピー
 +        For Each drv As DataRowView In dv
 +            dest.ImportRow(drv.Row)
 +        Next
 +
 +        Return dest
 +    End Function
 +End Module
 +</code>
 +[C#]
 <code csharp> <code csharp>
 +using System;
 using System.Data; using System.Data;
  
行 29: 行 92:
 } }
 </code> </code>
 +[C++]
 +<code cpp>
 +using namespace System;
 +using namespace System::Data;
 +
 +generic<typename T> where T: System::Data::DataTable
 +T SortTable(T source, String^ expression)
 +{
 +    // データテーブルのコピーを作成
 + T dest = (T)source->Clone();
 +
 +    // ソートされたデータビューの作成
 +    DataView^ dv = gcnew DataView(source);
 + dv->Sort = expression;
 +
 +    // ソートされたレコードのコピー
 +    for each (DataRowView^ drv in dv)
 +    {
 + dest->ImportRow(drv->Row);
 +    }
 +
 +    return dest;
 +}
 +</code>
 +
  • dotnet/dataset.1232504410.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)