mysql:15123
From: 岩崎 誠司 <岩崎 誠司 <iwasaki_ryuqseed_6130@xxxxxxxxxx>>
Date: Fri, 25 Dec 2009 12:18:00 +0900 (JST)
Subject: [mysql 15123] Re: バイナリデータの取り込みについて
岩崎です。 iida様、Eigo様、柳本様、chisa様、 返信有難うございます。 iida様、Eigo様、 strcpy()では、'\0'で止めるということはバイナリデータは 取り扱えない事になるのですね chisa様 これは、とりあえずテスト用のコードです。 なのでメモリの確保やエラーチェックはしてません。 selectは、その前の段階でつまずいたので書きません でした。 memcpy()一度、調べてみます。 CString型は'\0'がある場合は、だめみたいです 皆様、勉強不足ですいません。 MySQL言うよりVC++の問題ですね。 一から考え直してみます。有難うございました。 > @夜勤明けです。 > > 少し細かいのとMYSQLから少し外れてしまうですが・・・ > > > CString sPath1("G:\\file1.***"); // > 読込元のファイル > > CString sPath2("G:\\file2.***"); // > 保存先のファイル > > char pD[100000]; // ファイルの読み書き用 > ↑ハードコーディングすると後で死ぬ思いするかも。 > > > > > // ファイルの取得(読込モード) > > fopen_s(&pStream, sPath1, "rb"); > > int n = fread(pD, sizeof(char), sizeof(pD), > pStream); fclose(pStream); > ↑読み込みファイルサイズがpDを超えた部分は切り捨てられ るよ。 > Cチックに書くと > char *pD = NULL; > FILE *fp = NULL; > fopen節 > if(!fp)〜でエラー処理 > fseek(fp, 0L, SEEK_END); > int Length = (int)ftell(fp); > pD = (*char)malloc(sizeof(char) * Length); > if(pD == NULL)〜でエラー処理 > fseek(fp, 0L, SEEK_SET); > fread(fp, Length, sizeof(char), fp); > fclose(fp); > 処理 > free(pD); > pD = NULL; > といった具合に動的にメモリ確保した方がよいかも(端折り かつうろ覚えだからちゃ > んと調べてね) > > > // char への変換 > > pD == ""; > ↑警告出ませんでしたか? > 仮にpDに""を代入したい場合、C/C++でコレは通用しません 。Cだとmemsetとかが一般 > 的かな。 > > > strcpy(pD, sSqlData); > ↑皆様の仰るとおり\0の手前までしかコピーしてくれません 。 > バイナリの場合はCだとmemcpyを用いるのが一般的かな。 > > Insert文を作成している部分が抜けていますが、 > 作成前にバイナリファイルをエスケープする必要があります 。 > ↑にも書いてありますが、文字列は\0で終端を判定していま す。 > 検索すればすぐ出てくるので調べてみて下さい。 > > Selectの処理も抜けているようですが、 > insertと似たように配列をそのまま文字列としてコピーする と\0迄しか取ってくれま > せん。 > コレの対処法もマニュアルに記載されているので検索してみ て下さい。 > > C/C++は頭が良すぎる言語なので書いたこと以外実行してく れません。 > エラー処理もしてくれません。突然落ちます。最悪OSが壊れ て起動しないと言うこと > もあるそうです。 > 基本は0エラー0警告でコンパイルが終了することです。 > 送って頂いたソースが原文のままでしたら後で泣きを見るこ と間違い無しなので > 今一度基礎をしっかり作り上げる事をお勧めするです。 > > 無理にバイナリとして格納する必要性があるか考察の余地は あると思います。 > C/C++だとテキストエンコーディング処理挟んでも体感速度 は変わらないと感じま > す。 > > 以上 > > > -- > Chisa > Mail:admin@xxxxxxxxxx > Web:http://chisa.dtdns.net > > > -------------------------------------- Get Disney character's mail address on Yahoo! Mail http://pr.mail.yahoo.co.jp/disney/
15105 2009-12-14 19:00 [Honda Takayuki <hond] レプリケーションエラー(server id was not set) 15106 2009-12-14 20:26 ┗[Honda Takayuki <hond] 15115 2009-12-24 15:54 ┗[岩崎 誠司 <iwasaki_] バイナリデータの取り込みについて 15116 2009-12-24 16:01 ┣[<y-iida@xxxxxxxxxx> ] 15117 2009-12-24 16:25 ┣[岩崎 誠司 <iwasaki_] 15118 2009-12-24 17:17 ┃┗["Eigo Mori" <eigom@x] 15121 2009-12-24 19:45 ┣[Yoshiaki Yanagimoto ] 15122 2009-12-25 01:59 ┗[ちさ <admin@xxxxxxxx] -> 15123 2009-12-25 12:18 ┗[岩崎 誠司 <iwasaki_]