型指定された ResultSet の生成
更新 : 2007 年 11 月
XSD スキーマ ファイルの CustomTool プロパティを MSResultSetGenerator に設定すると、通常の型指定された DataSet データ ソース オブジェクトではなく、型指定された ResultSet データ ソース オブジェクトが生成されます。ResultSet は、高速のデータベース カーソルで、UI のデータ バインディング、データの後方スクロールと前方スクロール、およびデータベース内のデータの更新をサポートします。ResultSet は、常時接続されたモデルとしてデータベースへの接続を維持します。
型指定された ResultSet の特徴
生成した型指定された ResultSet オブジェクトは、型指定された DataSets によく似たデータベース テーブルへのタイプ セーフなアクセスを提供します。したがって、生成されたコードは、アプリケーションとデータベース間で受け渡しされたデータがコンパイル時にデータベース スキーマに正確に一致することを確認します。型指定された ResultSet で生成されたコードは、SQL Server Compact 3.5 の ResultSet 基本クラスを拡張し、対象となるデータベース テーブル固有のプロパティおよびメソッドを提供します。
型指定された ResultSet 用に生成されたコードの特徴を次に示します。
コンストラクタ 生成した型指定された ResultSet には、2 つのコンストラクタが含まれています。既定のコンストラクタは、デザイン時のシナリオと実行時の基本的なシナリオの両方に使用されます。Visual Studio のデザイン時には、既定のコンストラクタで、ローカルの開発用コンピュータに存在するデータベースへの接続を確立する必要があります。したがって、生成されたコードには、ローカルの SQL Server Compact 3.5 データベース ファイルの接続文字列が含まれています。既定のコンストラクタは、実行時に、実行中のアプリケーションと同じディレクトリからローカルの SQL Server Compact 3.5 データベース ファイルに切り替えます。これは、実行時の基本的なシナリオです。
接続文字列 実行時のシナリオが複雑な場合、たとえば、SQL Server Compact 3.5 データベース ファイルが実行時のディレクトリに存在しない場合や、接続文字列がその他の方法 (パスワードなど) で変化する場合は、オーバーロードされたコンストラクタを使用できます。オーバーロードされたコンストラクタは、カスタム接続文字列およびカスタム ResultSetOptions フラグという 2 つの引数を使用します。
接続プロパティ 接続プロパティは、データベースのデータにアクセスするために、型指定された ResultSet で使用される有効な SqlCeConnection オブジェクトです。接続プロパティはパブリック プロパティであり、型指定された ResultSet に対する接続の状態を管理するためにアクセスを有効にします。たとえば、トランザクションによっては、接続を閉じる必要がある場合があります。
テーブル列へのタイプ セーフ アクセス 生成されたコードは、データ テーブル内の各列にプロパティ アクセサを作成します。プロパティの型は、基になるデータベースの型を .NET Framework 型に割り当てることによって決まります。たとえば、nvarchar は、.NET Framework の文字列型に割り当てられます。生成されたプロパティでは、Get アクセサと Set アクセサの両方がサポートされているため、基になるデータベースの nvarchar ではなく .NET Framework の文字列型を使用して、データをプルおよびプッシュできます。各列には、IsxxxDBNull メソッドおよび SetxxxDBNull メソッドも含まれています。xxx は列名で、データベースの DBNull を取得および設定できるようにします。
AddxxxRecord メソッド (xxx はテーブル名) このメソッドを使用すると、新しい行をデータベース テーブルに追加できます。AddxxxRecord メソッドは、データ テーブルの列ごとに 1 つのパラメータを使用します。ただし、データベース エンジンによって値が割り当てられている自動インクリメント列は除きます。各パラメータは .NET Framework 型として再度宣言されます。その結果、アプリケーションでの使用が容易になり、基になるデータベース型を抽象化できます。このメソッドを呼び出した後、更新を呼び出す必要はありません。呼び出した後は、新しい行がデータベースにコミットされます。
DeletexxxRecord メソッド (xxx はテーブル名) このメソッドは、データベースから現在の行を削除します。DataSet とは異なり、この遷移はキャッシュされません。そのため、呼び出した後は、行がデータベースから削除されます。このメソッドを呼び出した後で、更新を呼び出す必要はありません。
Bind メソッド Bind メソッドは BindingSource という 1 つのパラメータを受け取ります。このパラメータは、フォーム上の 1 つ以上の UI コントロールにデータバインドされます。その後、このメソッドが、型指定された ResultSet のインスタンスに BindingSource をバインドすると、データ バインド チェーンが完成し、コントロールがデータベース内のデータを直接表示できるようになります。
メモ : デザイン時のシナリオでは、SQL Server Compact 3.5 データベースのハードコーディングされた接続文字列が必要です。この接続文字列は、たとえば、開発者間でプロジェクトが共有されている場合に最新のものでなくなる場合があります。その結果、[データ ソース] ウィンドウ、Windows フォーム デザイナ、またはその両方でプロジェクトを開くことができない場合があります。この問題を修正するには、型指定された ResultSet のコードを再生成します。ソリューション エクスプローラで、XSD スキーマ ファイルを右クリックし、[カスタム ツールの実行] をクリックします。