[前][次][番号順一覧][スレッド一覧]

mysql:8806

From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Tue, 17 Feb 2004 13:44:33 +0900
Subject: [mysql 08806] Re: C 言語でデータベースにラージオブジェクトを挿入する方法

 こんにちは。

Kazuhiro Yoshida <moriq@xxxxxxxxxx>さんの
<200402170312.AA03223@xxxxxxxxxx>
"[mysql 08805] Re: C 言語でデータベースにラージオブジェクトを挿入する方法"


> 結局SQLに詰め込むのだから言語の違いはあんまり関係ないのでは。
> BLOBといっても普通にINSERTすればいいですよね。
> http://www.mysql.gr.jp/jpdoc/4.0/manual.ja_toc.html#mysql_real_escape_string
> mysql_real_escape_string()
> mysql_real_query()
> 辺りを使えばできると思います。

 ですね。

 SQL文はテキストですから、バイナリデータの場合には、何らかの方法でテキ
ストにエスケープ/エンコードする必要があるでしょう。
mysql_real_escape_string()が SQL文レベルのエスケープ方法と言えるでしょう。
他にバイナリデータ自体を BASE64等でテキストにエンコードするやCSV等のテキ
ストデータを使う方法もある訳です。


 本来テキストであるSQL文にバイナリデータを押し込もうとする事から、エス
ケープ/エンコードという作業が必要になります。ならば、バイナリデータはファ
イルで保管し、DBにはそのインデックス(パスやURL)を入れる方法もある訳で、
ボク的にはこちらをお勧めしたいです。

 更に言えば、[mysql 08804]中の「登録しようとしているバイナリファイルは、
数値データの入ったバイナリファイルです」が気に掛かります。データが数値で
あるならば、BLOBに入れなければならない必然性はあまり無いでしょう。設計を
見直されては如何でしょうか。


 閑話休題。新海さんの「あんまりC言語ではMySQLって使わないんでしょうか?」
に付いては、多分にYESですね。速度を気にしない場合や、プログラムでの処理
の割合が小さいものに関しては、Perl等のいわゆる簡易言語で行った方が簡単で
す。特に Web絡みとなるとPHPとなる傾向もありますし。Java(JDBC)はアプロー
チ的にはCの場合と大きく異なり、簡易言語に近いものがある感じがしています。

 MySQLのCライブラリ、あるいはOracleのOCIを使って、Cでコードが組める人は
少数なのではないでしょうか。特に若い人が多い場合には、 100人規模のプロジェ
クトで2人居れば御の字だと思います。



    松枝知直    <tomom@xxxxxxxxxx>
            http://www.argus.ne.jp/~tomom/



[前][次][番号順一覧][スレッド一覧]

      8804 2004-02-17 11:30 [新海 雄一 <shinkai@] C 言語でデータベースにラージオブジェクトを挿入する方法
      8805 2004-02-17 12:12 ┗[Kazuhiro Yoshida <mo]                                       
->    8806 2004-02-17 13:44  ┗[ML account <ml@xxxxx]                                     
      8807 2004-02-17 15:54   ┗[新海 雄一 <shinkai@]