[pgsql-jp: 37357] Re: ラージオブジェクト、ファイル取得についての質問

ISHIDA Akio iakio @ mono-space.net
2006年 7月 24日 (月) 19:36:58 JST


こんにちは。石田@苫小牧市です。

NpgsqlもC#も全く使ったことないですが、
Npgsql と libpq は別のものなので、Npgsql のコネクションを
libpq の関数に渡すことはできないのではないでしょうか。

Npgsql を使ってラージオブジェクトを使うのであれば、
Npgsql の LargeObjectManager を使うのだと思います。

http://npgsql.projects.postgresql.org/docs/manual/UserManual.htm
の
Working with large object support
が参考になると思います(読み込みであれば2つめのサンプルが)。
# このサンプル、いきなりファイルサイズ分メモリを取ってるっぽいのですが

06/07/24 に yoshihiro tada<toronet2002 @ hotmail.com> さんは書きました:
> お世話になっております。多田と申します。
> ラージオブジェクトについて質問があり、この度投稿させて頂きます。
>
> Postgresに格納されているラージオブジェクト(PDFファイル)を
> lo_export()を使用し、クライアントのファイルシステム上へ格納
> する時にエラーが発生します。
> (pg_shadowのusesuper情報に関しては、TRUEとなっております。)
>
> PostgresとWindowsの権限の関係で、何か問題がありますでしょうか?
>
>
> 以下(ソースコード)のSystem.Security.Cryptography.Oid型は、
> 初めはlong型にしていたのですが上手く行かないので、上記の型に
> しました。
>
> 【環境】
> 使用Var :Postgres 8.1
> クライアントファイルシステム:WindowsXP
> ソフト:Visual Studio C#
>
>
> 【ソースコード】
>
>         [System.Runtime.InteropServices.DllImport("libpq.dll")]
>         extern static int lo_export( ref NpgsqlConnection conn,
>         System.Security.Cryptography.Oid lobjId, string filename );
>
>         (※libpq.dllが参照しているその他のdllは、全てプロジェクトに
>         追加してあります。)
>
>         public void export()
>         {
>         NpgsqlConnection conn = コネクション情報;
>         System.Security.Cryptography.Oid lobjId = ラージオブジェクトのOid;
>         string filename = @"C:\a.pdf";
>         lo_export(ref conn, lobjId, strFileName);
>         }
>
>
> 【エラー内容】
>
>         lo_export(〜); の行で、
>         「保護されているメモリに読み取りまたは書き込み操作を行おうとしました。
>         他のメモリが壊れていることが考えられます。」
>         というエラーが出力されます。
>
>
> ご存知の方がおられましたら、回答の程宜しくお願い致します。
>
>
>


-- 
ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>



pgsql-jp メーリングリストの案内