私は C# を使用して、さまざまなデータベース用の製品の具体的なプロバイダー実装を作成しています。詳細に入ることなく、列の 1 つはバイト配列型です (postgres の bytea - blob よりも bytea が選択されたため)。唯一の問題は、挿入された値と同じ値が返されないことです。Int32 ("0") を挿入すると、([0,0,0,0] ではなく) 8 [92 および 8x 48] が得られます。8バイトの値「0」のASCII表現ではなく、挿入した純粋なバイトを返す、パフォーマンスに優れたソリューションが必要です。
Npgsql を使用してデータを取得しています。誰かがc#の解決策を知っていれば、私も喜んでそれを学びます。
編集: Postgres 9.0、.Net 3.5
簡素化
コマンド クエリ: - 内部では挿入ステートメントのみを実行します。
select InsertOrUpdateEntry(:nodeId, :timeStamp, :data)
データ パラメータ:
byte [] value = BitConverter.GetBytes((int)someValue);
パラメータは次のように割り当てられます
command.Parameters.Add(new NpgsqlParameter("data", NpgsqlDbType.Bytea)
{ Value = value });
ステートメントを選択:
select * from Entries
入力したバイト配列と同じです。元に戻したいです。よろしくお願いします。
入力: 0 0 0 0
現在の出力: 92 48 48 48 48 48 48 48 48
期待される出力: 0 0 0 0