CData ADO.NET Provider for PostgreSQL とは
CData ADO.NET Provider for PostgreSQL は、.NET アプリケーションから PostgreSQL データにアクセスするための最も自然な方法を提供します。このプロバイダーは、PostgreSQL データへのアクセスの複雑さを、統合が容易なフルマネージドの ADO.NET Data Provider にラップしています。
この記事では、CData PostgreSQL ADO.NET Provider の主な機能を紹介します。ADO.NET Provider を使用して PostgreSQL に接続し、特定のテーブルからデータをクエリし、PostgreSQL のデータを更新し、ストアドプロシージャを実行する方法を解説します。
主な機能
- このプロバイダーは、PostgreSQL データベースバージョン 7.4 以降への標準ベースのアクセスを可能にします。
- CRUD(作成、読み取り、更新、削除)操作を包括的にサポートしています。
- ADO.NET Entity Framework(EF 6 および EFCore)をサポートしています。
- 32 ビットおよび 64 ビットオペレーティングシステムをサポートしています。
- .NET Framework 4.0 以上および .NET Standard 2.0 をサポートしています。
- 登録済み ADO.NET プロバイダーとして、Microsoft Visual Studio 2012 以降のバージョンとシームレスに統合できます。
PostgreSQL への接続
CData ADO.NET Provider for PostgreSQL は、以下の認証スキームを使用した PostgreSQL への認証をサポートしています:
- Standard(Password)
- AzureAD
- AzurePassword
- AzureMSI
- AwsIAMRoles
- AwsEC2Roles
- GCPServiceAccount
以下のセクションでは、Password 認証スキームを使用して PostgreSQL への接続を認証する例を紹介します:
C#
using (PostgreSQLConnection connection =
new PostgreSQLConnection("User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432"))
{
connection.Open();
}
VB.NET
Using connection As New PostgreSQLConnection("User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432")
connection.Open
End Using
CData PostgreSQL ADO.NET Provider の認証スキームと接続プロパティの詳細については、CData ドキュメントページをご覧ください:CData PostgreSQL ADO.NET Provider ドキュメント
ADO.NET Provider の使用方法
READ(データの読み取り)
以下のコード例では、PostgreSQL に接続し、SELECT SQL クエリを実行して Orders テーブルの ShipName カラムと ShipCity カラムを取得します:
C#
string connectionString = "User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432";
using (PostgreSQLConnection connection = new PostgreSQLConnection(connectionString)) {
PostgreSQLDataAdapter dataAdapter = new PostgreSQLDataAdapter("SELECT ShipName, ShipCity FROM \"postgres\".\"schema01\".Orders", connection);
DataTable table = new DataTable();
dataAdapter.Fill(table);
Console.WriteLine("Contents of Orders.");
foreach (DataRow row in table.Rows) {
Console.WriteLine("{0}: {1}", row["ShipName"], row["ShipCity"]);
}
}
VB.NET
Dim connectionString As String = "User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432"
Using connection As New PostgreSQLConnection(connectionString)
Dim dataAdapter As New PostgreSQLDataAdapter("SELECT ShipName, ShipCity FROM \"postgres\".\"schema01\".Orders", connection)
Dim table As New DataTable()
dataAdapter.Fill(table)
Console.WriteLine("Contents of Orders.")
For Each row As DataRow In table.Rows
Console.WriteLine("{0}: {1}", row("ShipName"), row("ShipCity"))
Next
End Using
WRITE(データの書き込み)
以下のコード例では、PostgreSQL に接続し、UPDATE SQL ステートメントを実行して "postgres"."schema01".Orders エントリの1つの ShipCity を更新します:
C#
using (PostgreSQLConnection connection = new PostgreSQLConnection(connectionString)) {
PostgreSQLDataAdapter dataAdapter = new PostgreSQLDataAdapter(
"SELECT ShipName, ShipCity FROM \"postgres\".\"schema01\".Orders", connection);
dataAdapter.UpdateCommand = new PostgreSQLCommand(
"UPDATE \"postgres\".\"schema01\".Orders SET ShipCity = @ShipCity " +
"WHERE Id = @Id", connection);
dataAdapter.UpdateCommand.Parameters.Add(new PostgreSQLParameter("@ShipCity", "ShipCity", DbType.String ));
dataAdapter.UpdateCommand.Parameters.Add(new PostgreSQLParameter("@Id", "Id", DbType.String ));
dataAdapter.UpdateCommand.Parameters[1].SourceVersion = DataRowVersion.Original;
DataTable table = new DataTable();
dataAdapter.Fill(table);
DataRow firstrow = table.Rows[0];
firstrow["ShipCity"] = "Raleigh";
dataAdapter.Update(table);
Console.WriteLine("Rows after update.");
foreach (DataRow row in table.Rows) {
Console.WriteLine("{0}: {1}", row["ShipName"], row["ShipCity"]);
}
}
VB.NET
Using connection As New PostgreSQLConnection(connectionString)
Dim dataAdapter As New PostgreSQLDataAdapter(
"SELECT ShipName, ShipCity FROM \"postgres\".\"schema01\".Orders", connection)
dataAdapter.UpdateCommand = New PostgreSQLCommand(
"UPDATE \"postgres\".\"schema01\".Orders SET ShipCity = @ShipCity " +
"WHERE Id = @Id", connection)
dataAdapter.UpdateCommand.Parameters.Add(new PostgreSQLParameter("@ShipCity", "ShipCity" DbType.String ))
dataAdapter.UpdateCommand.Parameters.Add(new PostgreSQLParameter("@Id", "Id", DbType.String))
dataAdapter.UpdateCommand.Parameters(1).SourceVersion = DataRowVersion.Original
Dim table As New DataTable()
dataAdapter.Fill(table)
Dim firstrow As DataRow = table.Rows(0)
firstrow("ShipCity") = "Raleigh"
dataAdapter.Update(table)
Console.WriteLine("Rows after update.")
For Each row As DataRow In table.Rows
Console.WriteLine("{0}: {1}", row("ShipName"), row("ShipCity"))
Next
End Using
ストアドプロシージャ
以下のコード例では、接続された PostgreSQL データベース内の指定されたオブジェクトから行を取得する SelectEntries というストアドプロシージャを実行します:
C#
string connectionString = "User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432";
using (PostgreSQLConnection connection = new PostgreSQLConnection(connectionString)) {
PostgreSQLCommand cmd = new PostgreSQLCommand("SelectEntries", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new PostgreSQLParameter("@ObjectName", "Account"));
// 必要に応じて他のパラメータを追加 ...
PostgreSQLDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) {
for (int i = 0; i < rdr.FieldCount; i++) {
Console.WriteLine(rdr.GetName(i) + " --> " + rdr[i]);
}
Console.WriteLine();
}
}
VB.NET
Dim connectionString As String = "User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432"
Using connection As New PostgreSQLConnection(connectionString)
Dim cmd As New PostgreSQLCommand("SelectEntries", connection)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New PostgreSQLParameter("@ObjectName", "Account"))
' 必要に応じて他のパラメータを追加 ...
Dim rdr As PostgreSQLDataReader = cmd.ExecuteReader()
While rdr.Read()
For i As Integer = 0 To rdr.FieldCount - 1
Console.WriteLine(rdr.GetName(i) + " --> " + rdr(i))
Next
Console.WriteLine()
End While
End Using
データ型のマッピング
CData Provider は、PostgreSQL のデータ型を .NET 互換の型に変換します。以下にいくつかの例を示します:
| PostgreSQL スキーマ | CData スキーマ |
|---|---|
|
bigint |
long |
|
json |
string |
|
numeric |
decimal |
|
smallint |
int |
|
xml |
string |
.NET アプリケーションでシームレスな PostgreSQL 接続を実現
PostgreSQL データの可能性を最大限に引き出したいとお考えですか?CData PostgreSQL ADO.NET Provider を使えば、.NET アプリケーションと PostgreSQL データをシームレスに統合できます。CData ADO.NET Provider for PostgreSQL コミュニティライセンスでは、個人の .NET プロジェクトでデータにアクセスするための永久無料ライブラリを、使い慣れた SQL で利用できます。ライセンスをリクエストして、今すぐ PostgreSQL 連携アプリの構築を始めましょう!