ホーム > コンピュータ > DataBase > PostgresSQL > Npgsql

バイナリ・データとbyteaデータ型とその動作[Npgsqlドキュメント]

作成日 2015.03.06
最終更新日 2015.03.06

概要

PostgreSQLデータベース・サーバのための、.NET データ・プロバイダNpgsqlのドキュメント(2014年7月25日・13改訂版)の和訳です。 旧版ドキュメント(外部サイト) の和訳は存在しましたが、現行版のドキュメントのものは見つからなかったので和訳しました。 PostgreSQLとC#の両方を学ぶための資料集めの一環としての作成しています。

原文

npgsqlマニュアル(2014年7月25日・13改訂版)(外部サイト)

公式ページのドキュメントです。英語で書かれています。

バイナリ・データとbyteaデータ型とその動作

Working with binary data and bytea datatype

このサンプルは、引数としてファイル名を取得します。「tableByteA」と呼ばれるテーブルに、その内容を挿入します。 テーブルは、bytea型のfield_byteaという名前のフィールドが含まれています。 そして、シリアル型の「field_serial」という名前のフィールド、 次に、それは、フィールドの内容を取り出します。そして、接尾辞「database」を持つ、新しいファイルを書き込みます。

Table スキーマー:.create table tableBytea (field_serial serial, field_bytea bytea)


using System;
using System.Data;
using Npgsql;
using System.IO;

public class t
{
    public static void Main(String[] args)
    {
        NpgsqlConnection conn = new NpgsqlConnection("server=localhost;user id=npgsql_tests;password=npgsql_tests");
        conn.Open();

        FileStream fs = new FileStream(args[0], FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(new BufferedStream(fs));
        Byte[] bytes = br.ReadBytes((Int32)fs.Length);
        Console.WriteLine(fs.Length);

        br.Close();
        fs.Close();

        NpgsqlCommand command = new NpgsqlCommand("insert into tableBytea(field_bytea) values(:bytesData)", conn);
        NpgsqlParameter param = new NpgsqlParameter(":bytesData", NpgsqlDbType.Bytea);
        param.Value = bytes;
        command.Parameters.Add(param);
        command.ExecuteNonQuery();
        command = new NpgsqlCommand("select field_bytea from tableBytea where field_serial = (select max(select field_serial) from tableBytea);", conn);

        Byte[] result = (Byte[])command.ExecuteScalar();
        fs = new FileStream(args[0] + "database", FileMode.Create, FileAccess.Write);
        BinaryWriter bw = new BinaryWriter(new BufferedStream(fs));
        bw.Write(result);

        bw.Flush();
        fs.Close();
        bw.Close();
        conn.Close();
    }
}
			
inserted by FC2 system