2017-09-01 7 views
0

プロジェクトでMFC ODBCとMariaDBを使用しています。しかし、バイナリデータを書き込もうとすると、約240バイトしか書き込まれず、書き込みが終了します。バイナリデータを書き込むときには、約240バイトしか書き込まれません。

rs_curveがそれにRFXと CRecordset派生クラスである
  TRY 
     { 
     CLocalHistoryCurve rs_curve(NULL); 
     if (rs_curve.IsOpen()) 
     { 
      rs_curve.Close(); 
     } 
     rs_curve.m_strFilter.Format(_T("furnace_number='%s' AND batch_number='%s' AND tube_number=%d"), 
      str_f, str_b, n_t); 
     rs_curve.Open(); 
     rs_curve.MoveFirst(); 
     rs_curve.Edit(); 
     rs_curve.m_velo_curve.SetSize(arr.GetSize()); 
     rs_curve.m_velo_curve.Copy(arr); 
     rs_curve.Update(); 
     rs_curve.Close(); 
     } 
      CATCH(CDBException, e) 
     { 
      wcout << e->m_strError.GetString() << endl; 
     } 
     END_CATCH 

:ここで私が使用したコードです。 m_velo_curveCByteArrayのメンバーで、書き込む前は6040バイトです。このレコードセットを開いてレコードを見つけるときに問題はありません。

RFX_Binary(pFX, _T("[velo_curve]"), m_velo_curve, 65535); 

velo_curveが65535バイトの最大容量を持つBLOB列である:
は、ここで私が使用RFX関数です。
6040バイトを一度に列に書き込むにはどうすればよいですか?
また、見つかった場合は間違いを報告してください。前もって感謝します。

+0

バイト#6040はゼロバイトですか? 'Copy()'の制限は何ですか? (私は20年でMFCまたはODBCに触れていません) –

+0

2 decades ?! m_velo_curveは最初から0バイトありますが、それでも書き込むことができるので、0バイトがその動作に影響するとは思いません。 'Copy()'は 'CByteArray'のメンバ関数です。私はそれが正確な量のバイトを宛先にコピーすると確信しています。 –

+0

この問題は解決されました。データを照会するときは間違いです。データは実際に正しく更新され、 –

答えて

0

これは、データを表示するためにHeidiSQLを使用していて、遅い読み込みを防ぐためにデリミタLEFTを自動的に追加するためです。すべての6040バイトがBLOB列に正しく書き込まれました。
質問が閉じました。

関連する問題