本記事では、SqlSugarフレームワーク、OceanBase Connector/ODBC、およびOceanBaseデータベースを使用して、テーブルの作成、データの挿入、クエリなどの基本操作を実現するアプリケーションの構築方法を紹介します。
前提条件
OceanBaseデータベースがインストール済みで、Oracleモードのユーザーテナントが作成済みであること。OceanBaseデータベースのインストールの詳細については、デプロイの概要を参照してください。
Visual Studioと、NuGetパッケージマネージャーのプラグインおよび.NET Frameworkコンポーネントがインストール済みであること。
OceanBase Connector/ODBCドライバーがインストール済みであること。
説明
OceanBase公式ダウンロードセンターのOceanBase Dedicatedページのドライバーとミドルウェアモジュールから、OceanBase ODBCドライバープログラムのWindows版インストールパッケージをダウンロードしてください。Windows版OceanBase Connector/ODBCドライバーインストールパッケージはワンクリックデプロイ式で、デフォルトのガイド手順に従ってインストール可能です。
操作手順
説明
本記事で示されている操作手順は、Windows環境下でVisual Studio Community 2019を使用して、このプロジェクトをコンパイルおよび実行する方法です。他のOS環境やコンパイラを使用している場合は、操作手順が若干異なる場合があります。
sqlsugar-oceanbase-odbcプロジェクトを開きます。- SqlSugarに関連するパッケージをインストールします。
- データソースを設定します。
sqlsugar-oceanbase-odbcプロジェクトのデータソースを修正します。- プロジェクトをビルドします。
- アプリケーションを実行します。
- 出力結果を確認します。
ステップ1:sqlsugar-oceanbase-odbcプロジェクトを開く
Visual Studio Community 2019を起動します。
既存のプロジェクトを開きます。
Visual Studio Community 2019の開始画面で、「使用を開始する」の下にある プロジェクトまたはソリューションを開く(P) ボタンをクリックします。または、Visual Studio Community 2019の開始画面で、「使用を開始する」の下にある コードなしで続行(W) ボタンをクリックするか、上部のメニューバーから ファイル -> 開く -> プロジェクト/ソリューション(P) を選択します。
sqlsugar-oceanbase-odbc プロジェクト フォルダに移動し、プロジェクトファイル(
sqlsugar-oceanbase-odbc.slnまたはsqlsugar-oceanbase-odbc.csproj)を選択して 開く をクリックします。
ステップ2:SqlSugar関連のパッケージをインストールする
Visual Studio Community 2019の開始画面で、上部のメニューバーから ツール > NuGetパッケージマネージャー > ソリューションのNuGetパッケージの管理 を選択します。
参照 の検索ボックスに
sqlsugarと入力して、SqlSugarパッケージをダウンロードします。参照 の検索ボックスに
sqlsugar.odbcと入力して、SqlSugar.OdbcおよびSqlSugar.OdbcCoreパッケージをダウンロードします。インストールが完了すると、プロジェクトのコードファイルでSqlSugar関連のネームスペースとタイプを使用できます。
ステップ3:データソースを設定する
データベースの接続情報を取得します。
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -usys@oracle001 -p******パラメータの説明:
-h:OceanBaseデータベースの接続IPアドレスを提供します。ODP接続方式ではODPアドレスを使用し、直接接続方式ではOBServerノードのIPアドレスを使用します。-P:OceanBaseデータベースの接続ポートを提供します。ODP接続方式のデフォルトポートは2883で、ODPデプロイ時にカスタマイズすることができます。直接接続方式のデフォルトポートは2881で、OceanBaseデータベースのデプロイ時にカスタマイズすることができます。-u:テナントの接続アカウント。ODP接続の一般的な形式:ユーザー名@テナント名#クラスタ名またはクラスタ名:テナント名:ユーザー名。直接接続方式の形式:ユーザー名@テナント名。-p:アカウントのパスワード。
接続文字列に関するその他の情報については、OBClientによるOceanBaseテナントへの接続を参照してください。
OceanBase Connector/ODBCドライバーが正常にインストールされているかどうかを確認します。
コントロールパネル > システムとセキュリティ > 管理ツール > ODBCデータソース(64ビット) > ドライバー を選択します。OceanBase Connector/ODBCドライバーのインストールが成功している場合、ここに表示されます。
新しいデータソースを作成します。
ユーザーDSN > 追加 > ドライバーの選択 を選択し、その後 完了 をクリックします。
ポップアップウィンドウで、データソース名 Name と説明 Description を入力して、Next をクリックします。
ポップアップウィンドウでデータベース接続情報を入力して Next をクリックすると、初期化ステートメント、TLS、カーソル、結果セットなどの情報を設定することができます。
説明
データベース接続情報の入力が完了したら、まずTest DSNをクリックして、データソースに正常に接続できるかどうかを確認します。
設定の完了後に Finish をクリックし、データソースの追加が完了したら OK をクリックします。
ステップ4:sqlsugar-oceanbase-odbcプロジェクトのデータソースを修正する
ステップ3:データソースを設定する で作成したデータソースに基づいて、Program.cs ファイル内のデータソースを修正します。
例:
your_dsn を ステップ3:データソースを設定する で作成したデータソース test_oboracle に置き換えます。
public static string ConnectionString = "DSN=test_oboracle";
ステップ5:プロジェクトをビルドする
ビルド メニューを選択し、ソリューションのビルド を選択します。ビルドプロセス中にコンパイラの出力およびエラーや警告情報が表示されます。
ステップ6:アプリケーションを実行する
デバッグ メニューを選択し、デバッグの開始 または デバッグなしで開始 を選択してアプリケーションを実行します。
ステップ7:出力結果を確認する
出力結果はデバッグコンソールに表示されます。プログラムの設計ロジックとコードに基づいて、出力の処理方法を判断できます。
プロジェクトコードについて
sqlsugar-oceanbase-odbc をクリックして、プロジェクトコードをダウンロードします。これは、sqlsugar-oceanbase-odbc.zip という名前の圧縮ファイルです。
解凍すると、sqlsugar-oceanbase-odbc という名前のフォルダが作成されます。ディレクトリ構造は以下のとおりです:
sqlsugar-oceanbase-odbc
├─ Program.cs
├─ sqlsugar-oceanbase-odbc.csproj
└─ sqlsugar-oceanbase-odbc.sln
ファイルの説明:
Program.cs:プロジェクトのメインプログラムファイルで、プロジェクトのエントリポイント、データテーブルの構造定義、データテーブル操作を実装したソースコードファイルが含まれます。sqlsugar-oceanbase-odbc.csproj:Visual Studioのプロジェクトのメインプロジェクトファイルで、プロジェクトの設定、依存関係、ビルド情報を定義するために使用されます。sqlsugar-oceanbase-odbc.sln:Visual Studioのソリューションファイルで、プロジェクトおよび関連プロジェクトの情報が含まれ、複数のプロジェクトの統合管理とビルドに使用されます。
Program.csファイルのコード解説
Program.cs ファイルのコードは、SqlSugarを使用してOceanBaseデータベースを操作する方法を示しており、テーブルの作成、データの挿入、データのクエリなどの基本操作を実装しています。同時に、AopEvents オブジェクトを使用して、ログ記録などのイベントコールバック関数を設定することにより、デバッグとトラブルシューティングを容易にしています。
本記事の Program.cs ファイルのコードには、主に以下の部分が含まれます:
ネームスペースをインポートします。
usingキーワードを使用して、ネームスペースSystem、SqlSugar、System.Linq、System.Data、System.Data.Odbcをインポートします。これにより、関連するデータアクセスクラスとデータベース操作のクラスおよびメソッドを使用できます。コード:
using System; using SqlSugar; using System.Linq; using System.Data; using System.Data.Odbc;ネームスペースを定義します。関連するクラスとメソッドを配置するために使用されます。
GbaseTestという名前のネームスペースを定義し、このネームスペース内でProgramとTestEntityの2つのクラスを定義します。コード:
namespace GbaseTest { internal class Program { ... ... } public class TestEntity { ... ... } }Programという名前のクラスを定義します。プログラムの主要ロジックが含まれます。Programという名前のクラスを定義します。プログラムの主要ロジックが含まれます。具体的な手順は以下のとおりです:データベース接続文字列を格納するために、公共の静的文字列タイプの変数
ConnectionStringを定義します。この変数は、現在のプログラムアセンブリのどこからでもアクセスできます。このうち、DSN=your_dsnはODBC接続方式を使用して、your_dsnという名前のデータソースを使用することを示しています。注意
プログラムを実行する際は、
your_dsnをステップ3で作成したデータソース名に置き換えてください。Mainメソッド:プログラムのエントリポイントで、プログラムの主要ロジックが含まれます。
try-catchブロック:tryキーワードを使用して、例外を引き起こす可能性のあるコード、usingステートメント、データベース操作をラップします。catchキーワードを使用して例外をキャッチし、処理を行います。
- 最後に、プログラム終了前に
Program End.を出力します。
コード:
internal class Program { public static string ConnectionString = "DSN=your_dsn"; static void Main(string[] args) { try { using (...) { // データベース操作 } } catch (Exception ex) { ... ... } Console.WriteLine("Program End."); } }usingステートメント。ConnectionConfigを使用して、データベース接続情報とその他のオプションを設定します。これには、データベースタイプ(ODBC)、接続文字列ConnectionString、主キータイプAttribute、自動接続クローズ、ログ実行イベントコールバック関数の設定が含まれます。SqlSugarClientオブジェクトを使用して、テーブルの作成、データの挿入、データのクエリなどのデータベース操作を簡単に実行できます。usingステートメントを使用することで、データベース接続のクローズを含む関連リソースの解放を自動的に実行できます。具体的な手順は以下のとおりです:SqlSugarClientオブジェクトを作成して、dbという名前の変数に代入します。接続設定インスタンスを作成します。オブジェクト初期化子を使用して
DbType、ConnectionString、InitKeyType、IsAutoCloseConnection、AopEventsなどのプロパティを初期化します。データベースタイプをODBCに設定しました。
接続文字列を
ConnectionStringに設定しました。主キータイプを
Attributeに設定しました。自動接続クローズを設定しました。
AopEventsのログ実行イベントコールバック関数を設定しました。ログ実行イベントコールバック関数の実装ロジックを設定しました。ここで、sqlは実行されるSQLステートメントを表し、pはSQLステートメント内のパラメータリストを表します。実装ロジックでは、SQLステートメントとパラメータリストをコンソールに出力します。
コード:
using (SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { DbType = SqlSugar.DbType.Odbc, ConnectionString = ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, AopEvents = new AopEvents { OnLogExecuting = (sql, p) => { Console.WriteLine(sql); Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); } } }))データベース操作。
SqlSugarClient.Ado.ExecuteCommandメソッドを使用してSQLステートメントを実行し、テーブルの作成とデータの挿入を行います。SqlSugarClient.Ado.SqlQueryメソッドを使用してデータのクエリを実行し、クエリ結果をイテレーションして出力します。SqlSugarClientオブジェクトを使用して、テーブルの作成、データの挿入、データのクエリなどのデータベース操作を簡単に実行できます。具体的な手順は以下のとおりです:テーブルの作成開始を示すヒント情報を出力します。
SQLステートメントを実行して
test_tbl1という名前のテーブルを作成します。このテーブルにはidとnameの2つの列が含まれます。データの挿入開始を示すヒント情報を出力します。
テーブル名を格納する変数
tableNameを定義し、値としてtest_tbl1を代入します。SQLステートメントを実行して
test_tbl1という名前のテーブルにデータを挿入します。挿入するのは3つのレコードで、それぞれidが1、2、3、nameがJohn、Jack、Amyです。データのクエリ開始を示すヒント情報を出力します。
SQLステートメントを実行して
test_tbl1という名前のテーブル内のすべてのデータのクエリを実行し、クエリ結果を変数dataに代入します。TestEntityはクエリ結果のエンティティタイプです。クエリ結果のイテレーション開始を示すヒント情報を出力します。
クエリ結果をイテレーションし、各レコードを変数
itemに代入します。各レコードのidフィールドとnameフィールドを出力します。
コード:
{ Console.WriteLine("Create Table:"); db.Ado.ExecuteCommand("CREATE TABLE test_tbl1(id NUMBER PRIMARY KEY, name VARCHAR2(50))"); Console.WriteLine("Insert Data:"); string tableName = "test_tbl1"; int intValue = db.Ado.ExecuteCommand($"INSERT INTO {tableName} (id, name) VALUES (1, 'John'), (2, 'Jack'), (3, 'Amy')"); Console.WriteLine("Query Data"); var data = db.Ado.SqlQuery<TestEntity>($"SELECT * FROM {tableName}"); Console.WriteLine("Query Results:"); foreach (var item in data) { Console.WriteLine($"id: {item.id}, name: {item.name}"); } }catchキーワードを使用して例外をキャッチし、処理を行います。プログラムで例外が発生した場合、例外の関連情報を出力します。例外をキャッチして情報を出力すると、デバッグと問題の特定に役立ち、プログラムの堅牢性と信頼性をある程度向上させることができます。具体的な手順は以下のとおりです:
catchキーワードを使用して例外をキャッチし、キャッチした例外オブジェクトを変数exに代入します。この例外オブジェクトはExceptionタイプまたはそのサブクラスのインスタンスです。プログラムで例外が発生したことを示すヒント情報を出力します。
キャッチした例外オブジェクトを文字列に変換して出力します。この文字列には例外のタイプ、メッセージ、スタックトレースなどの情報が含まれます。
コード:
catch (Exception ex) { Console.WriteLine("Program Exception:"); Console.WriteLine(ex.ToString()); }TestEntityクラスを定義します。TestEntityという名前のクラスを定義します。このクラスには、idとnameの2つのプロパティがあり、それぞれエンティティオブジェクトのidフィールドとnameフィールドを表します。具体的な手順は以下のとおりです:TestEntityという名前のpublicクラスを定義します。エンティティオブジェクトの
idフィールドを表す公共の整数タイプのプロパティidを定義します。プロパティのgetとsetメソッドを使用して、このフィールドの読み取りと設定の操作を行うことができます。エンティティオブジェクトの
nameフィールドを表す公共の文字列タイプのプロパティnameを定義します。プロパティのgetとsetメソッドを使用して、このフィールドの読み取りと設定の操作を行うことができます。
コード:
public class TestEntity { public int id { get; set; } public string name { get; set; } }
全コード表示
using System;
using SqlSugar;
using System.Linq;
using System.Data;
using System.Data.Odbc;
namespace GbaseTest
{
internal class Program
{
public static string ConnectionString = "DSN=your_dsn";
static void Main(string[] args)
{
try
{
using (SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = SqlSugar.DbType.Odbc,
ConnectionString = ConnectionString,
InitKeyType = InitKeyType.Attribute,
IsAutoCloseConnection = true,
AopEvents = new AopEvents
{
OnLogExecuting = (sql, p) =>
{
Console.WriteLine(sql);
Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
}
}
}))
{
Console.WriteLine("Create Table:");
db.Ado.ExecuteCommand("CREATE TABLE test_tbl1(id NUMBER PRIMARY KEY, name VARCHAR2(50))");
Console.WriteLine("Insert Data:");
string tableName = "test_tbl1";
int intValue = db.Ado.ExecuteCommand($"INSERT INTO {tableName} (id, name) VALUES (1, 'John'), (2, 'Jack'), (3, 'Amy')");
Console.WriteLine("Query Data");
var data = db.Ado.SqlQuery<TestEntity>($"SELECT * FROM {tableName}");
Console.WriteLine("Query Results:");
foreach (var item in data)
{
Console.WriteLine($"id: {item.id}, name: {item.name}");
}
}
}
catch (Exception ex)
{
Console.WriteLine("Program Exception:");
Console.WriteLine(ex.ToString());
}
Console.WriteLine("Program End.");
}
}
public class TestEntity
{
public int id { get; set; }
public string name { get; set; }
}
}
関連ドキュメント
OceanBaseデータベースへの接続に関する詳細については、接続方法の概要を参照してください。
OceanBase Connector/ODBCに関する詳細については、OceanBase Connector/ODBCを参照してください。
クリックしてsqlsugar-oceanbase-odbcサンプルプロジェクトをダウンロード