開発者カテゴリ データベースアクセス技術 ADO.NET 2.0 アジェンダ ADO.NET の基本的なオブジェクト Visual Studio 2005 でのビジュアルな ADO.NET の実装 ADO.NET とは ? ADO.NETとは? .NET Frameworkで提供されるデータアクセスのためのクラスラ イブラリ 汎用プログラミングインターフェイス 実装形態の選択肢 クライアント Windowsフォーム 接続型 データ操作中は 接続を維持 データベース サーバー 接続 DataSet 非接続型 データ操作中は接続 を一旦切断 データ層 ADO.NET の特徴 ADO.NETの特徴 非接続データセットのサポート (スケーラビリティ) XMLデータのサポート (汎用性) Web フォーム XML Webサービス DataSet DataSet ブラウザ Windows フォーム DataSet 異種プラットフォーム XML ビジネス層 (中間層) データ層 ADO.NET オブジェクト モデル 1/2 DataAdapter データソースと DataSet 間の伝播 クライアント DataSet 非接続型データキャッシュ DataSet 非 接 続 型 DataReader 接続型レコードセット Forward only / Read only DataTable DataAdapter データソース Command Connection DataReader 接 続 型 ADO.NET オブジェクト モデル 2/2 DataSet の構造 DataSet DataRelation DataRelation DataRow DataTable DataTable DataRow DataRow DataRow DataAdapter DataAdapter ~ DataTable DataAdapter .NET Framework データ プロバイダ データ ソースにアクセスするためのクラスのセット データ プロバイダの種類 .NET Framework Data Provider for SQL Server SQL Server 7.0 以降 .NET Framework Data Provider for Oracle Oracle Client 8.1.7 以降 .NET Framework Data Provider for OLE DB SQL Server 6.5、Access、あらゆる OLE DB データ ソース .NET Framework Data Provider for ODBC レガシ データ その他 基本的な接続と参照 1/2 Connection/Commandを直接使う ExecuteQuery メソッド、DataReader を使って操作 Sub Main() Dim cn As New OleDbConnection() Dim cmd As New OleDbCommand() Dim dr As OleDbDataReader cn.ConnectionString = strCn '接続文字列 cn.Open() cmd.Connection = cn cmd.CommandText = "SELECT title FROM titles" dr = cmd.ExecuteReader() While dr.Read() s = dr.GetString(0) s = CStr( dr("title") ) End While dr.Close() cn.Close() End Sub VB.NET 基本的な接続と参照 2/2 Connection/Commandを直接使う ExecuteQuery メソッド、DataReader を使って操作 static void Main(string[] args) { OleDbConnection cn = new OleDbConnection(); OleDbCommand cmd = new OleDbCommand(); OleDbDataReader dr; cn.ConnectionString = strCn; //接続文字列 cn.Open(); cmd.Connection = cn; cmd.CommandText = "SELECT title FROM titles"; dr = cmd.ExecuteReader(); while( dr.Read() ) { s = dr.GetString(0); s = (string) dr["title"]; } dr.Close(); cn.Close(); } C# 基本的な接続と更新 1/2 Connection/Commandを直接使う ExecuteNonQuery メソッド Sub Main() VB.NET Dim cn As New OleDbConnection() Dim cmd As New OleDbCommand() cn.ConnectionString = strCn cn.Open() cmd.Connection = cn cmd.CommandText = "UPDATE titles SET price = price + 1 " + _ "WHERE title_id = 'BU1111'" 'SQL文の実行 cmd.ExecuteNonQuery() cn.Close() End Sub 基本的な接続と更新 2/2 Connection/Commandを直接使う ExecuteNonQuery メソッド static void Main(string[] args) { OleDbConnection cn = new OleDbConnection(); OleDbCommand cmd = new OleDbCommand(); cn.ConnectionString = strCn; cn.Open(); cmd.Connection = cn; cmd.CommandText = "UPDATE titles SET price = price + 1 " + "WHERE title_id = 'BU1111'"; //SQL文の実行 cmd.ExecuteNonQuery(); cn.Close(); } C# データセットへの読み込み 1/2 DataAdapter による伝播 データソース → DataAdapter → DataSet Sub Main() Dim ds As New DataSet() Dim adapter As New OleDbDataAdapter( _ "SELECT * FROM titles", _ "provider=SQLOLEDB;data source=(local);" + _ "user id=sa;password=;initial catalog=pubs") 'データソース → DataAdapter → DataSet adapter.Fill(ds, "titles") '各行を走査 Dim row As DataRow For Each row In ds.Tables("titles").Rows Console.WriteLine( row("title").ToString() ) Next row End Sub VB.NET データセットへの読み込み 2/2 DataAdapter による伝播 データソース → DataAdapter → DataSet static void Main(string[] args) { DataSet ds = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter ("SELECT * FROM titles", "provider=SQLOLEDB;data source=(local);" + "user id=sa;password=;initial catalog=pubs"); //データソース → DataAdapter → DataSet adapter.Fill(ds, "titles"); //各行を走査 foreach(DataRow row in ds.Tables["titles"].Rows) Console.WriteLine( row["title"].ToString() ); } C# データセットからの更新 1/2 DataAdapter による伝播 データソース ← DataAdapter ← DataSet Sub Main() Dim ds As New DataSet() Dim adapter As New OleDbDataAdapter( _ "SELECT * FROM titles", _ "provider=SQLOLEDB;data source=(local);" + _ "user id=sa;password=;initial catalog=pubs") Dim builder As New OleDbCommandBuilder(adapter) 'データソース → DataAdapter → DataSet adapter.Fill(ds, "titles") 'データセットのデータを更新 ds.Tables("titles").Rows(0)("title") = ".NET Products" 'データソース ← DataAdapter ← DataSet adapter.Update(ds, "titles") End Sub VB.NET データセットからの更新 2/2 DataAdapter による伝播 データソース ← DataAdapter ← DataSet C# static void Main(string[] args) { DataSet ds = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter ("SELECT * FROM titles", "provider=SQLOLEDB;data source=(local);" + "user id=sa;password=;initial catalog=pubs"); OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); //データソース → DataAdapter → DataSet adapter.Fill(ds, "titles"); //データセットのデータを変更 ds.Tables["titles"].Rows[0]["title"] = ".NET Products"; //データソース ← DataAdapter ← DataSet adapter.Update(ds, "titles"); } アジェンダ ADO.NET の基本的なオブジェクト ADO.NET を使用したデータ操作 Visual Studio 2005 でのビジュアルな ADO.NET の実装 データ ソース構成ウィザード Windowsフォーム データベース サーバー ★ TableAdapter ★ DataSet クライアント データ層 データ ソース ウィンドウ 1/2 ゼータセット構造のビュー データ連結の簡素化 ドラッグ アンド ドロップによる指定 コントロールの種類を指定できる データ ソース ウィンドウ 2/2 BindingSource を介したデータ連結 Windowsフォーム ★ ★ ★ データを表示する ユーザー インターフェイス (カレント レコードを反映) カレント レコードの移動等を 行うユーザー インターフェイス BindingNavigator BindingSource TableAdapter DataSet クライアント カレント レコードの管理 データの提供 データベース サーバー データ層 データセット デザイナ 型指定されたデータセットのデザイン ツール 直接の編集対象は .xsd ファイル 型指定されたデータセットと TableAdapter の編集 型指定されたデータセットを作るには データ ソース ウィンドウから データ ソースを追加するとき、 「データベース」 か 「Web サービス」を選択 [プロジェクト] - [新しい項目の追加] から、「データ セット」を選択
© Copyright 2024 ExpyDoc