2009年12月24日

[mysql 15121] Re: バイナリデータの取り込みについて

柳本です。

>int n = fread(pD, sizeof(char), sizeof(pD), pStream);
sizeof(pD)はメモリのバイト数が返ってくるはずです。
char型なのでたまたま個数と一致してるだけのような気が・・・

#細かい事ですいません。

(2009/12/24 15:54), 岩崎 誠司 wrote:
> 皆様 お世話になります。
>
> 質問です。
>
> 今、私はファイルのバイナリデータをMySQLに取り込みたいと
> 思い悪戦苦闘しおります。
>
> LAN上でMySQL経由でバイナリファイルを共有したいと思い
> VS2008 C++でアプリを組み、アプリ内でクエリを発行して
> データをinsertしたいのですがうまくいきません。
>
> 皆様のお知恵を拝借願えないでしょうか?
>
> コードはこんな感じです。
>
> FILE *pStream;
> CString sPath1("G:\\file1.***"); // 読込元のファイル
> CString sPath2("G:\\file2.***"); // 保存先のファイル
> CString Sql; // Sqlクエリ
> CString sSqlData; // MySQLからselectで取り出したデータ
> char pD[100000]; // ファイルの読み書き用
>
> // ファイルの取得(読込モード)
> fopen_s(&pStream, sPath1, "rb");
> int n = fread(pD, sizeof(char), sizeof(pD), pStream);
> fclose(pStream);
>
> // クエリの作成
> Sql.Format(_T(
> "INSERT INTO eudc (id, eudc_data, count) "
> "VALUES (0, '%s', n)"
> ), cData, n);
>
> // Sqlクエリの発行
>
> // MySQLからのバイナリデータを取得
>
> // char への変換
> pD == "";
> strcpy(pD, sSqlData);
> // ファイルへの書き込み
> fopen_s(&pStream, sPath2, "wb");
> fwrite(pD, sizeof(char), n, pStream);
> fclose(pStream);
>
> freadでは、ちゃんと取得できてるようですが、
> pDの先頭がNULLみたいでCStringに変換できません。
> (%sのところにバイナリデータが入らない。)
>
> ちなみにテキストファイルの場合は、これで問題ないです。
> 又、pDを触らずにそのまま別のファイルに書き込んでも
> 大丈夫みたいです。
>
> 使用環境
> OS Windows Vista Ultimate SP2
> 開発ツール VS2008 C++
> MySQL Ver5.1
>
> 以上、初歩的なことかもしれませんが、
> よろしくお願いします。
>
> --------------------------------------
> Get Disney character's mail address on Yahoo! Mail
> http://pr.mail.yahoo.co.jp/disney/
>

投稿者 xml-rpc : 2009年12月24日 19:45
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/91687
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。