今回の記事は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を用いてさらに便利な形式でデータを取得することができます。気になる方は先ほどのリンクからどうぞ。
では今回の記事は以上です。他にも多数の記事を記載しているので是非参考にしてみて下さい。
コメント