データベースアクセス技術 ADO.NET 2.0

開発者カテゴリ
データベースアクセス技術
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 サービス」を選択
[プロジェクト] - [新しい項目の追加] から、「データ セット」を選択