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()