[ ODP.NET ] Oracle へ接続し SQL を発行する (OracleConnection / OracleCommand)

Pocket

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()
スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>