スポンサーリンク

【C#】OracleDBに接続し、データ取得・登録。〜 OracleClient使用 〜

C#
スポンサーリンク

今回の記事はC#で、OracleClientを用いてOracleDBに接続し、データ取得・登録を行う方法に関してご紹介する記事です。初心者にも分かりやすいように記載して行くので是非参考にしてみて下さい。

今回紹介するOracleClientを用いてデータ取得は簡単ですが、WebAPIのような構成でデータを取得するためには「Dapper」というライブラリも非常に便利です。下記記事で記載しているので興味があればご確認ください。

「【C#】Dapperを用いてDBからデータを取得する方法ご紹介。」

ではまずはOracleDBに接続してみましょう。

スポンサーリンク

C#でOracleDBに接続

まずは「nuget」にて「Oracle.ManagedDataAccess」を追加します。「プロジェクト」→「Nugetのパッケージ管理」からパッケージを検索してインストールしてみましょう。

完了すればVisualStudioで下記のコードを実行してみます。

using Oracle.ManagedDataAccess.Client;
using System;
using System.Data;

namespace PracticeConnectOracleDB
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (OracleConnection conn = new OracleConnection())
                {
                    conn.ConnectionString =
                        "Data Source=" +
                        "(DESCRIPTION=" +
                        "(ADDRESS=(PROTOCOL=TCP)(HOST=[IPアドレス])(PORT=[PORT番号]))" +
                        "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=[サーバ名]))); " +
                        "User Id=[ユーザーID]; Password=[パスワード]";
                    conn.Open();
                    Console.WriteLine("接続完了");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
        }
    }
}

少し解説してみます。

conn.ConnectionString =
                        "Data Source=" +
                        "(DESCRIPTION=" +
                        "(ADDRESS=(PROTOCOL=TCP)(HOST=[IPアドレス])(PORT=[PORT番号]))" +
                        "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=[サーバ名]))); " +
                        "User Id=[ユーザーID]; Password=[パスワード]";

この部分に接続情報をセットします。接続がうまくいかないのはほぼこの部分の設定内容がおかしいことが原因です。

接続がつながれば次はDBにデータを登録してみましょう。

OracleDBにデータ登録

using Oracle.ManagedDataAccess.Client;
using System;
using System.Data;

namespace PracticeConnectOracleDB
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (OracleConnection conn = new OracleConnection())
                {
                    conn.ConnectionString =
                        "Data Source=" +
                        "(DESCRIPTION=" +
                        "(ADDRESS=(PROTOCOL=TCP)(HOST=[IPアドレス])(PORT=[PORT番号]))" +
                        "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=[サーバ名]))); " +
                        "User Id=[ユーザーID]; Password=[パスワード]";
                    conn.Open();
                    Console.WriteLine("接続完了");
                    //インサート文
                    string sql = "insert ~";
                    using (OracleCommand cmd = new OracleCommand(sql))
                    {
                        cmd.Connection = conn;
                        cmd.CommandType = CommandType.Text;
                        OracleDataReader reader = cmd.ExecuteReader();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
        }
    }
}

この部分にインサート文を記載して下さい。

 //インサート文
string sql = "insert ~";

下記の部分でSQLとしてセットしたクエリを「Excute」で実行しています。

using (OracleCommand cmd = new OracleCommand(sql))
{
       cmd.Connection = conn;
       cmd.CommandType = CommandType.Text;
       OracleDataReader reader = cmd.ExecuteReader();
 }

データ更新の処理もSQLを書き換えれば問題なく使用できます。バインド変数を用いる場合は上記で記載した「Dapper」が便利ですので下記の記事より確認してみて下さい。

「【C#】バインド変数を用いてOracleDBからデータを取得する方法ご紹介。」

OracleDBからデータ取得

using Oracle.ManagedDataAccess.Client;
using System;
using System.Data;

namespace PracticeConnectOracleDB
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (OracleConnection conn = new OracleConnection())
                {
                    conn.ConnectionString =
                        "Data Source=" +
                        "(DESCRIPTION=" +
                        "(ADDRESS=(PROTOCOL=TCP)(HOST=[IPアドレス])(PORT=[PORT番号]))" +
                        "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=[サーバ名]))); " +
                        "User Id=[ユーザーID]; Password=[パスワード]";
                    conn.Open();
                    Console.WriteLine("接続完了");
                    //Select
                    string sql = "select ~";
                    using (OracleCommand cmd = new OracleCommand(sql))
                    {
                        cmd.Connection = conn;
                        cmd.CommandType = CommandType.Text;
                        using (OracleDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                Console.WriteLine(reader["カラム名"]);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
        }
    }
}

先ほどと同様にSQLを実行するまでは一緒で実行した結果を下記で実行しています。

using (OracleDataReader reader = cmd.ExecuteReader())
{
      while (reader.Read())
      {
            Console.WriteLine(reader["カラム名"]);
      }
}

データを取りたいカラム名を指定するとデータを取得できます。こちらもDapperを用いてさらに便利な形式でデータを取得することができます。気になる方は先ほどのリンクからどうぞ。

では今回の記事は以上です。他にも多数の記事を記載しているので是非参考にしてみて下さい。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

C#
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました