Dim cnn As New OracleConnection( _
"user id=scott;password=tiger;data source=orcl")
cnn.Open()
Dim keyColumnList(1) As String
keyColumnList(0) = "EMPNO"
Dim insertColumnList(2) As String
insertColumnList(0) = "EMPNO"
insertColumnList(1) = "ENAME"
Dim cmd As OracleCommand = New OracleCommand("", cnn)
cmd.XmlCommandType = OracleXmlCommandType.Insert
Dim sb As New StringBuilder
sb.Append("<ROWSET>")
sb.Append("<MYROW num = ""1"">")
sb.Append("<EMPNO>1000</EMPNO>")
sb.Append("<ENAME>Smith</ENAME>")
sb.Append("</MYROW>")
sb.Append("<MYROW num = ""2"">")
sb.Append("<EMPNO>1001</EMPNO>")
sb.Append("<ENAME>Barney</ENAME>")
sb.Append("</MYROW>")
sb.Append("</ROWSET>")
cmd.CommandText = sb.ToString
With cmd.XmlSaveProperties
.KeyColumnsList = keyColumnList
.RowTag = "MYROW"
.Table = "EMP"
.UpdateColumnsList = insertColumnList
End With
Dim cnn As New OracleConnection( _
"user id=scott;password=tiger;data source=orcl")
cnn.Open()
Dim keyColumnList(1) As String
keyColumnList(0) = "EMPNO"
Dim updateColumnList(1) As String
updateColumnList(0) = "ENAME"
Dim cmd As OracleCommand = New OracleCommand("", cnn)
cmd.XmlCommandType = OracleXmlCommandType.Update
Dim sb As New StringBuilder
sb.Append("<ROWSET>")
sb.Append("<MYROW num = ""1"">")
sb.Append("<EMPNO>1000</EMPNO>")
sb.Append("<ENAME>Emily</ENAME>")
sb.Append("</MYROW>")
sb.Append("<MYROW num = ""2"">")
sb.Append("<EMPNO>1001</EMPNO>")
sb.Append("<ENAME>John</ENAME>")
sb.Append("</MYROW>")
sb.Append("</ROWSET>")
cmd.CommandText = sb.ToString
With cmd.XmlSaveProperties
.KeyColumnsList = keyColumnList
.RowTag = "MYROW"
.Table = "EMP"
.UpdateColumnsList = updateColumnList
End With
Dim cnn As New OracleConnection( _
"user id=scott;password=tiger;data source=orcl")
cnn.Open()
Dim keyColumnList(1) As String
keyColumnList(0) = "EMPNO"
Dim cmd As OracleCommand = New OracleCommand("", cnn)
cmd.XmlCommandType = OracleXmlCommandType.Delete
Dim sb As New StringBuilder
sb.Append("<ROWSET>")
sb.Append("<MYROW num = ""1"">")
sb.Append("<EMPNO>1000</EMPNO>")
sb.Append("</MYROW>")
sb.Append("<MYROW num = ""2"">")
sb.Append("<EMPNO>1001</EMPNO>")
sb.Append("</MYROW>")
sb.Append("</ROWSET>")
cmd.CommandText = sb.ToString
With cmd.XmlSaveProperties
.KeyColumnsList = keyColumnList
.RowTag = "MYROW"
.Table = "EMP"
End With
以上、今回はODP.NETからOracle XML DBへのアクセス手法について説明しました。ODP.NETが提供しているクラスと、.NET Frameworkが提供しているクラスをうまく連携させることにより、Oracle XML DBの機能を最大限に生かしたアプリケーションの開発を行うことが可能です。
連載の最後に
今回で「ODP.NETファーストステップ」の連載は最終回となります。この連載をきっかけに、.NET環境でOracleを利用される方が増えてくだされば、筆者としてこれ以上うれしいことはありません。.NET環境への対応は、VSIP(Visual Studio Industry Partner)への参加によって加速しており、現在Visual Studio .NET上でGUIによりOracleデータベースのオブジェクト管理ができるツール「Oracle Developer Tools for Visual Studio .NET」のベータ版がUSのOTNサイトよりダウンロードできます。ぜひ、ダウンロードして試してみてください。長い間ご愛読いただき、ありがとうございました。(連載完)