2009年12月24日

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

>> pD == ""; ←消し忘れです。

だとしても、iidaさんのおっしゃるように

>> strcpy(pD, sSqlData);

はうまくいかないのではないでしょうか。

strcpy()は「文字列」をコピーする関数で一般的にバイナリデータをコピーするため
には使えません。文字列の終端記号('\0')に相当するデータが見つかった時点でコピー
をやめるのでは。。。ということをiidaさんが言ってるのかと。

Regards,
Eigo


> 岩崎と申します。
> すいません。訂正です。
>
> iida様 すいません消し忘れです。
>
>> 皆様 お世話になります。
>>
>> 質問です。
>>
>> 今、私はファイルのバイナリデータを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); ← 訂正 cData でなく pD です
>>
>> // 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/
>>
>>
>
>
> --------------------------------------
> Get Disney character's mail address on Yahoo! Mail
> http://pr.mail.yahoo.co.jp/disney/
>


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




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