miku + oracle = visual basic ?

Post on 30-Dec-2015

63 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Miku + Oracle = Visual Basic ?. 2008.06.07 初音 玲. 自己紹介. タイトルの意味は?. Part.2. Visual Basic 2008 + Oracle Database 11 g Release 1. 2008.06.07 初音 玲. index. ADO.NET の基本的な構造. .NET データプロバイダ. DataAdapter. Parameter. プログラミング. Command. DataReader. DataSet. Connection. Transaction. - PowerPoint PPT Presentation

TRANSCRIPT

わんくま同盟 大阪勉強会 #19

わんくま同盟 大阪勉強会 #19

自己紹介

わんくま同盟 大阪勉強会 #19

タイトルの意味は?

わんくま同盟 大阪勉強会 #19

Visual Basic 2008+

Oracle Database 11 g Release 1

2008.06.07

初音 玲

Part.2

わんくま同盟 大阪勉強会 #19

index

わんくま同盟 大阪勉強会 #19

ADO.NET の基本的な構造

.NET データプロバイダ

Connection

Command DataReader

DataAdapter

データベース

DataSet

Windows コントロールASP.NET コントロール

Transaction

Parameter

プログラミング

プログラミング

わんくま同盟 大阪勉強会 #19

ODP.NET の基本的な構造

ODP.NET

OracleConnection

OracleCommand OracleDataReader

OracleDataAdapter

Oracle Database

DataSet

Windows コントロールASP.NET コントロール

OracleTransaction

OracleParameter

プログラミング

プログラミング

わんくま同盟 大阪勉強会 #19

Visual Studio

ODP.NET

OracleDatabase

ODE.NET

アセンブリアセンブリ

ODT

ODP.NET

ODP.NET

デプロイ

.NET ストアド ( アセンブ

リ )

.NET ストアド ( アセンブ

リ )

ビルド

ODP.NET:Oracle Data Provider for .NETODT :Orace Developer Tools for Visual StudioODE.NET:Oracle Database Extensions for .NET

わんくま同盟 大阪勉強会 #19

対応 DB バージョン 対応 Visual Studio

ODT 10.1.x.x Oracle 9i Database Release 2Oracle Database 10g Release 1

Visual Studio .NET 2003

ODT 10.2.0.1 Oracle 9i Database Release 2Oracle Database 10g Release 1Oracle Database 10g Release 2

Visual Studio .NET 2003

ODT 10.2.0.2 Oracle8i R8.1.7.4 以降 Visual Studio .NET 2003Visual Studio 2005

ODT 11.1.0.6 Oracle 9i Database Release 2 ~ Visual Studio .NET 2003Visual Studio 2005Visual Studio 2008

~ ODT 10.2: サーバーエクスプローラとは別ODT 11.1 ~ : サーバーエクスプローラに統合

わんくま同盟 大阪勉強会 #19

専用ミドルウェアは、やっぱり速い

OLE DB .NET Data Provider

OLE DB Provider for

Oracle

ODP.NETODP.NET oo4ooo4o

ログオンログオン 2.42.4 3.03.0 3.23.2 1.01.0

参照参照 2.02.0 3.53.5 3.53.5 1.01.0

追加追加 0.70.7 1.01.0 1.01.0 1.01.0

更新更新 0.70.7 1.21.2 1.21.2 1.01.0

10

VB2005+oo4oVB2005+oo4o の処理時間を1としたときの相対の処理時間を1としたときの相対比比独自プログラムによる測定

わんくま同盟 大阪勉強会 #19

DataSet クラス

• メモリ上の仮想データベース• DataTables コレクション

– DataTable クラス• DataRows コレクション• DataColumns コレクション• Constraints コレクション

• DataRelations コレクション– RDBMS のリレーション定義に相当– 親子関係を定義

行行

列列

主キー , 外部キー制約主キー , 外部キー制約

わんくま同盟 大阪勉強会 #19

ODP.NET

わんくま同盟 大阪勉強会 #19

index

わんくま同盟 大阪勉強会 #19

Connection オブジェクト

わんくま同盟 大阪勉強会 #19

接続文字列の設定タイミング

わんくま同盟 大阪勉強会 #19

ADO.NET からのエラーの取得

Exceptionで

いいかも?

Exceptionで

いいかも?

わんくま同盟 大阪勉強会 #19

DB サーバDB サーバ

アプリケーション

アプリケーション ODP.NETODP.NET

• ODP.NET のデフォルト動作は Pooling=True

User Id={0};Password={1};Data Source= ホスト文字列 ;

接続接続

切断切断

接続接続

切断切断

接続接続

切断切断

接続処理疑似

疑似疑似

疑似疑似

わんくま同盟 大阪勉強会 #19

index

わんくま同盟 大阪勉強会 #19

Command オブジェクト

わんくま同盟 大阪勉強会 #19

SELECT 文設定タイミング

Connection

接続タイミング

は?

接続タイミング

は?

わんくま同盟 大阪勉強会 #19

DataReader オブジェクト

必須なのは?

必須なのは?

必須なのは?

必須なのは?

わんくま同盟 大阪勉強会 #19

DataReader を使う上での注意点

Using _cn As New OracleConnection(CnString) _cn.Open() Using _cmd As New OracleCommand(SqlString, _cn) Dim rd As OracleDataReader = Nothing rd = _cmd.ExecuteReader Do While rd.Read Me.ResultList.Items.Add(rd.Item("fname").ToString) Loop End Using Using _cmd As New OracleCommand(SqlString, _cn) Dim rd As OracleDataReader = Nothing rd = _cmd.ExecuteReader Do While rd.Read Me. ResultList.Items.Add(rd.Item("fname").ToString) Loop End Using _cn.Close()End Using

間違いはどこ?

間違いはどこ?

わんくま同盟 大阪勉強会 #19

列単位でデータを実取得する

わんくま同盟 大阪勉強会 #19

Parameter オブジェクト

なぜ違う?なぜ違う?

わんくま同盟 大阪勉強会 #19

Parameter オブジェクト

わんくま同盟 大阪勉強会 #19

GUI 操作による DB アプリ作成

26

DEPT

EMP

マスターディテール形式の画面を作成マスターディテール形式の画面を作成•GUIGUI 操作のみ操作のみ

SplitContainer

詳細

DataGridView

わんくま同盟 大阪勉強会 #19

GUI 操作による開発と生産性

GUIGUI でお手軽開発で良いか検討でお手軽開発で良いか検討•すべてをカバーするものではないすべてをカバーするものではない

意図したタイミングで意図したデータを取意図したタイミングで意図したデータを取得得•業務の特性に合わせて業務の特性に合わせて•画面の特性に合わせて画面の特性に合わせて•お客様の特性に合わせてお客様の特性に合わせて

そのためにはそのためには•やはりコーディングが必要やはりコーディングが必要

27

わんくま同盟 大阪勉強会 #19

index

わんくま同盟 大阪勉強会 #19

SQL 文の直接実行 (Command オブジェクト )

わんくま同盟 大阪勉強会 #19

データソースと DataSet クラスの対応付け

データソース Command DataAdapter Dataset

アプリ

わんくま同盟 大阪勉強会 #19

DataAdapter オブジェクト

Openタイミング

は?

Openタイミング

は?

わんくま同盟 大阪勉強会 #19

CommandBuilder で SQL 作成

_cn.Open()Using _tr As SqlTransaction = _cn.BeginTransaction() Using _cmd As New SqlCommand("SELECT * FROM employee ", _cn) _cmd.Transaction = _tr '### 重要 ### Using _da As New SqlDataAdapter(_cmd) Using _cb As New SqlCommandBuilder(_da) _da.UpdateCommand = _cb.GetUpdateCommand() _da.InsertCommand = _cb.GetInsertCommand() _da.DeleteCommand = _cb.GetDeleteCommand() Try _da.Update(Ds, "employee") _tr.Commit() Catch ex As Exception MessageBox.Show(ex.Message, ・・・ ) _tr.Rollback() End Try End Using End Using End UsingEnd Using

わんくま同盟 大阪勉強会 #19

CommandBuilder オブジェクト

This property is not supported.

実装すらされていません

わんくま同盟 大阪勉強会 #19

DataSet の利用時の注意点

わんくま同盟 大阪勉強会 #19

DataSet の利用時の注意点

わんくま同盟 大阪勉強会 #19

トランザクション処理

GUI 操作で作成した DB アプリには致命的障害– 保存ボタンで保存されるのは、 DEPT のみ

36

Me.Validate() Me.DEPTBindingSource.EndEdit() Me.DEPTTableAdapter.Update(Me.DataSet1.DEPT)

EMPEMP へのへの UpdateUpdate メソッドを追加で解メソッドを追加で解決?決?•DEPTDEPT 更新後、更新後、 EMPEMP 更新に失敗する更新に失敗する

とと………… ....トランザクション制御が必要トランザクション制御が必要

わんくま同盟 大阪勉強会 #19

暗黙的なトランザクション

TableAdapter ごとに Connection が存在– Connection に対するトランザクションでは無

37

System.TransactionsSystem.Transactions クラスを使うクラスを使う

DEPTTableAdapter オブジェクト

EMPTableAdapter オブジェクトOracle

Database

OracleConnection

オ ブ ジ ェ ク ト

OracleConnectionオ ブ ジ ェ ク ト

OracleCommandオブジェクト

OracleCommandオブジェクト

MS-DTC ( マイクロソフト分散トランザクションコーディネータ )MS-DTC ( マイクロソフト分散トランザクションコーディネータ )

わんくま同盟 大阪勉強会 #19

暗黙的なトランザクション

Try Me.Validate() Using _trn As New System.Transactions.TransactionScope Me.DEPTBindingSource.EndEdit() Me.DEPTTableAdapter.Update(Me.DataSet1.DEPT) ' Me.EMPBindingSource.EndEdit() Me.EMPTableAdapter.Update(Me.DataSet1.EMP) ' _trn.Complete() 'トランザクション完了 End UsingCatch ex As System.Transactions.TransactionAbortedException MessageBox.Show(ex.Message)Catch ex As Exception MessageBox.Show(ex.Message)End Try

38

System.Transactions の参照設定を忘れないようにSystem.Transactions の参照設定を忘れないように

ADO.NET 2.0 からはCOM+ カタログ登録不要GAC への登録不要

わんくま同盟 大阪勉強会 #19

明示的なトランザクション

Connection が1つ– Connection に対するトランザクションで可能

39

OracleDatabase

OracleConnection

オ ブ ジ ェ ク ト

OracleCommandオブジェクト

OracleCommandオブジェクト

わんくま同盟 大阪勉強会 #19

明示的なトランザクション

_trn = cn.BeginTransaction()Try : _DBCmdEMP.Transaction = _trn _DBCmdDEPT.Transaction = _trn _DBCmdEMP.ExecuteNonQuery() _DBCmdDEPT.ExecuteNonQuery() _trn.Commit()Catch ex As Exception _trn.Rollback()End Try

40

わんくま同盟 大阪勉強会 #19

( おまけ )LINQ to SQL

わんくま同盟 大阪勉強会 #19

index

わんくま同盟 大阪勉強会 #19

権限

わんくま同盟 大阪勉強会 #19

Windows

Oracle におけるユーザ管理

OracleOracle 認証

OracleWindows 認証

ユーザー

ローカル認証だと 4 万人くらいが限界なので AD 認証も考慮

インスタンス

ユーザー

インスタンス

ユーザー

認証認証

認証認証

権限権限

権限権限

Security

Policy

Security

Policy

Security

Policy

Security

Policy

Security

Policy

Security

Policy

わんくま同盟 大阪勉強会 #19

Windows アプリにおけるお勧め認証構造

XML WEB サービス DB

DB 認証

Win アプリ

ID/ パス渡し

Windows 認証

わんくま同盟 大阪勉強会 #19

WEB アプリにおけるお勧め認証構造

ブラウザ XML WEB サービス DB

DB 認証

WEB アプリ

ID/ パス渡し

わんくま同盟 大阪勉強会 #19

まとめ

わんくま同盟 大阪勉強会 #19

top related