作成日 2015.03.06
最終更新日 2015.03.06
概要
PostgreSQLデータベース・サーバのための、.NET データ・プロバイダNpgsqlのドキュメント(2014年7月25日・13改訂版)の和訳です。
旧版ドキュメント(外部サイト)
の和訳は存在しましたが、現行版のドキュメントのものは見つからなかったので和訳しました。
PostgreSQLとC#の両方を学ぶための資料集めの一環としての作成しています。
原文
npgsqlマニュアル(2014年7月25日・13改訂版)(外部サイト)
公式ページのドキュメントです。英語で書かれています。
検索パスとその動作
Working with search paths
データベースに接続するとき、Npgsqlは、あなたが、検索パスを修正することができます。 これを行うために、構文で、あなたの接続文字列に、それを指定するだけです。:
searchpath='blablabla,blabla,blabla'.
接続文字列で検索パスを指定することに注意します。 あなたは、それが、自動的に追加されないように、publicスキーマーを追加するといいかもしれません。
配列とその動作
Working with Arrays
Npgsqlの配列サポートを使用するために、あなたは、論理和の操作として、パラメータdbtypeを指定する可能性があります。 IEnumerable where Tを実装する何かは、npgsqlによって、T[]と同じように扱われるすでにサポートされている型です。 IEnumerable where Uを実装する何かが、IEnumerableを実装することは、Tなどと同じように扱われるでしょう。 例えば、リストは、二次元の配列の16ビット-整数として扱われることになります。 例えば、Int32の配列を使用することは、このような何かを使用するでしょう。:
command.Parameters.Add(new NpgsqlParameter("arrayParam", NpgsqlDbType.Array | NpgsqlDbType.Int32));
あるいは、あなたは、配列にするために、直接、パラメータの値を指定することができます。:
Int32 a = new Int32[2];
a[0] = 4;
a[1] = 2;
command.Parameters.Add(new NpgsqlParameter("@parameter")).Value = a;
ここに、完全な例があります。:
using System;
using System.Data;
using Npgsql;
using NpgsqlTypes;
public class c
{
public static void Main(String[] args)
{
//NpgsqlEventLog.Level = LogLevel.Debug;
//NpgsqlEventLog.LogName = "NpgsqlTests.LogFile";
//NpgsqlEventLog.EchoMessages = true;
NpgsqlConnection conn = new NpgsqlConnection
("Server=127.0.0.1;User id=npgsql_tests;password=npgsql_tests;");
conn.Open();
NpgsqlCommand d = new NpgsqlCommand();
Int32[] a = new Int32[2];
a[0] = 4;
a[1] = 2;
NpgsqlCommand command = new NpgsqlCommand("select :arrayParam", conn);
command.Parameters.Add(new NpgsqlParameter
("arrayParam", NpgsqlDbType.Array | NpgsqlDbType.Integer));
command.Parameters[0].Value = a;
Console.WriteLine(command.ExecuteScalar());
conn.Close();
}
}
これは、postgresqlのログです。:
LOG: connection received: host=127.0.0.1 port=37356
DEBUG: forked new backend, pid=10616 socket=6
LOG: connection authorized: user=npgsql_tests database=npgsql_tests
LOG: statement: SELECT oid, typname FROM pg_type WHERE typname IN
('oidvector', '_oidvector', 'unknown', '_unknown', 'refcursor', '_refcursor', 'char',
'_char', 'bpchar', '_bpchar', 'varchar', '_varchar', 'text', '_text', 'name', '_name',
'bytea', '_bytea', 'bit', '_bit', 'bool', '_bool', 'int2', '_int2', 'int4', '_int4',
'int8', '_int8', 'oid', '_oid', 'float4', '_float4', 'float8', '_float8', 'numeric',
'_numeric', 'inet', '_inet', 'money', '_money', 'date', '_date', 'time', '_time',
'timetz', '_timetz', 'timestamp', '_timestamp', 'timestamptz', '_timestamptz',
'point', '_point', 'lseg', '_lseg', 'path', '_path', 'box', '_box', 'circle',
'_circle', 'polygon', '_polygon', 'uuid', '_uuid', 'xml', '_xml')
LOG: statement: select array['4','2']::int4[]
LOG: disconnection: session time: 0:00:00.342 user=npgsql_tests database=npgsql_tests host=127.0.0.1 port=37356
DEBUG: server process (PID 10616) exited with exit code 0
そして、これは、Npgsqlがコンソールで表示するものです。:
System.Int32[]