dotnet:dataset

差分

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

この比較画面へのリンク

次のリビジョン
前のリビジョン
dotnet:dataset [2009/01/21 11:03] – 作成 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>
-public static T SortTable<T>(T source, string expression) where T : System.Data.DataTable+using System; 
 +using System.Data; 
 + 
 +namespace SampleApplicationCS 
 +
 +    public class SampleAppCS 
 +    { 
 +        public static T SortTable<T>(T source, string expression) 
 +            where T : System.Data.DataTable 
 +        { 
 +            // データテーブルのコピーを作成 
 +            T dest = (T)source.Clone(); 
 + 
 +            // ソートされたデータビューの作成 
 +            DataView dv = new DataView(source); 
 +            dv.Sort = expression; 
 + 
 +            // ソートされたレコードのコピー 
 +            foreach (DataRowView drv in dv) 
 +            { 
 +                dest.ImportRow(drv.Row); 
 +            } 
 + 
 +            return dest; 
 +        } 
 +    } 
 +
 +</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();+ T dest = (T)source->Clone();
  
     // ソートされたデータビューの作成     // ソートされたデータビューの作成
-    DataView dv = new DataView(source); +    DataViewdv = gcnew DataView(source); 
-    dv.Sort = expression;+ dv->Sort = expression;
  
     // ソートされたレコードのコピー     // ソートされたレコードのコピー
-    foreach (DataRowView drv in dv)+    for each (DataRowViewdrv in dv)
     {     {
-        dest.ImportRow(drv.Row);+ dest->ImportRow(drv->Row);
     }     }
  
行 20: 行 116:
 } }
 </code> </code>
 +
  • dotnet/dataset.1232503430.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)