miku + oracle = visual basic ?
Post on 30-Dec-2015
63 Views
Preview:
DESCRIPTION
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