2017-09-01 80 views
0

我在項目上使用MFC ODBC和MariaDB。但是,當我試圖寫入二進制數據時,它只會寫入大約240個字節,然後寫入完成。下面是我使用的代碼:寫入二進制數據時僅寫入大約240個字節

  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 

其中rs_curve是RFX一個CRecordset派生類在裏面。 m_velo_curve是一個CByteArray成員,在我寫入之前有6040個字節。打開此記錄集並查找記錄時沒有問題。
這裏是RFX函數使用:

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

其中velo_curveBLOB柱,以65535個字節的最大容量。
如何將6040字節一次寫入列?
另外,如果您發現任何錯誤,請報告任何錯誤。提前致謝。

+0

字節#6040是否爲零字節? 'Copy()'有什麼限制? (我在二十年沒有碰過MFC或ODBC。) –

+0

20年?! m_velo_curve從一開始就有零字節,但它仍然可以寫入,所以我不認爲零字節會影響它的行爲。 'Copy()'是'CByteArray'的成員函數。我相信它會將確切數量的字節複製到目標。 –

+0

這個問題解決了。查詢數據時是錯誤的。數據實際更新正確, –

回答

0

這是因爲我使用HeidiSQL來查看數據,並且它會自動添加分隔符LEFT以防止緩慢加載。所有6040字節都已正確寫入BLOB列。
問題已關閉。