ODP.NET を使用して、SQL を発行するサンプルです。通常、よく使用するのは select / insert / update / delete 文 だと思いますが。大きく分けて結果が返される select 文と、結果が返されない insert / update / delete 文では SQL の発行方法が異なります。
スポンサーリンク
Oracle データベースへ接続
まずは、ODP.NET を使って、VB / C# から oracle データベースへ接続する方法です。事前に、接続先が tnsnames.ora に設定されていることは確認しておいてください。
VB.NET
Imports Oracle.DataAccess.Client Imports Oracle.DataAccess.Types Dim user As String = "user" 'ユーザー Dim passwd As String = "password" 'パスワード Dim ds As String = "datasource" 'データソース ' Oracle接続文字列を組み立てる Dim connectstring As String = "User Id=" + user + "; " + "Password=" + passwd + "; " + "Data Source=" + ds Using cnn As OracleConnection = New OracleConnection(connectstring) ' Oracleへのコネクションの確立 cnn.Open() ' ============================================================ ' 何か処理する(select/update/delete etc...) ' ============================================================ '接続を閉じる cnn.Close() End Using
C#
using Oracle.DataAccess.Client; using Oracle.DataAccess.Types; string user = "user"; //ユーザー string passwd = "password"; //パスワード string ds = "datasource"; //データソース // Oracle接続文字列を組み立てる string connectstring = "User Id=" + user + "; " + "Password=" + passwd + "; " + "Data Source=" + ds; using (OracleConnection cnn = new OracleConnection(connectstring)) { // Oracleへのコネクションの確立 cnn.Open(); // ============================================================ // 何か処理する(select/update/delete etc...) // ============================================================ // 接続を閉じる cnn.Close(); }
select 文を発行する
次にデータベース接続後に select 文を発行し、結果( DataSet ) を取得するサンプルになります。
VB.NET
Dim sql As String = "select * from ・・・・・・" Dim myCmd As OracleCommand = New OracleCommand(sql, cnn) Dim myDa As OracleDataAdapter = New OracleDataAdapter(myCmd) Dim myDs As DataSet = New DataSet() ' 結果取得 myDa.Fill(myDs)
C#
string sql = "select * from ・・・・・・・"; OracleCommand myCmd = new OracleCommand(sql, cnn); OracleDataAdapter myDa = new OracleDataAdapter(myCmd); DataSet myDs = new DataSet(); // 結果取得 myDa.Fill(myDs);
insert / update / delete 文の発行とトランザクション
データベース接続後に insert / update / delete 文を発行し、結果(操作レコード数)を取得するサンプルコードになります。 トランザクションの開始とコミット(または、ロールバック)も行っています。
VB.NET
' トランザクションの開始 Dim txn As OracleTransaction = cnn.BeginTransaction() Dim sql As String = "insert or update or delete ・・・・・" Dim myCmd As OracleCommand = New OracleCommand(sql, cnn) ' SQL の実行(リターン値は操作したレコード数) myCmd.ExecuteNonQuery() txn.Commit() 'コミット またはロールバック txn.Rollback()
C#
// トランザクションの開始 OracleTransaction txn = cnn.BeginTransaction(); string sql = "insert or update or delete ・・・・・"; OracleCommand myCmd = new OracleCommand(sql, cnn); // SQL の実行(リターン値は操作したレコード数) myCmd.ExecuteNonQuery(); txn.Commit(); //コミット またはロールバック txn.Rollback()