ÀÌ ³ëÆ®¸¦ °Ë»ö ÇÏ °í MFC µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¸¦ »ç¿ë ÇÏ ¿© ODBC SQL_LONGVARCHAR ¹× SQL_LONGVARBINARY µ¥ÀÌÅÍ Çü½ÄÀ» Àü¼Û ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù¡£
±ä Varchar/VarbinaryÀÇ °³¿ä Áö¿ø
ODBC SQL_LONG_VARCHAR ¹× SQL_LONGBINARY µ¥ÀÌÅÍ Çü½Ä (±ä µ¥ÀÌÅÍ ¿À¸·Î ¿©±â ÂüÁ¶)´Â ¾öû³ ¾çÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. 3 °¡Áö ¹æ¹ýÀ¸·ÎÀÌ µ¥ÀÌÅ͸¦ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.:
±ä µ¥ÀÌÅÍ ¿ Äõ¸® ¸Å°³ º¯¼ö´Â Áö¿ø µÇÁö ¾Ê½À´Ï´Ù. ±×µéÀº Outputcolumns¿¡ ´ë ÇÑ Áö¿ø¡£
CString/Cbytearray¿¡ ±ä µ¥ÀÌÅÍ ¿À» ¹ÙÀεù
ÀåÁ¡:
ÀÌ Á¢±Ù ÀÌÇØ ÇÏ °í, °£´Ü ÇÏ °í Ä£¼÷ ÇÑ Å¬·¡½º¿Í ÇÔ²² ÀÛµ¿ ÇÕ´Ï´Ù. ÇÁ·¹ÀÓ ¿öÅ©¿¡¼´Â CFormView CString DDX_TextÇÔ²² Áö¿ø ÇÕ´Ï´Ù. ´ç½ÅÀº ÀÏ¹Ý ¹®ÀÚ¿ ¶Ç´Â CString ¹× CByteArray Ŭ·¡½º¿¡ Ä÷º¼Ç ±â´ÉÀ» ¸¹ÀÌ ÇÏ °í µ¥ÀÌÅÍ °ªÀ» ·ÎÄ÷ΠÇÒ´ç µÈ ¸Þ¸ð¸® ¾çÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆíÁý ¶Ç´Â AddNew ÇÔ¼ö È£Ãâ ÇÏ´Â µ¿¾È ÇÊµå µ¥ÀÌÅÍÀÇ ¿À·¡ µÈ º¹»çº»À» À¯Áö ÇÏ´Â ÇÁ·¹ÀÓ ¿öÅ© ¹× ÇÁ·¹ÀÓ ¿öÅ© ÀÚµ¿À¸·Î µ¥ÀÌÅÍ º¯°æ¿¡ ´ë ÇÑ °Ë»ö¡£
¸Þ¸ðnbsp;CString ¹®ÀÚ µ¥ÀÌÅÍ ¹× CByteArray ¿¡ ÀÌÁø µ¥ÀÌÅÍ¿¡ ´ë ÇÑ ÀÛ¾÷¿¡ ´ë ÇÑ ÀÛ¾÷À» À§ÇØ ¼³°è µÇ¾ú½À´Ï´Ù, ÀÌÈÄ CByteArray ¿¡ CString, ¹®ÀÚ µ¥ÀÌÅÍ (SQL_LONGVARCHAR) ¹× ÀÌÁø µ¥ÀÌÅÍ (SQL_LONGVARBINARY)¸¦ ³Ö¾î ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù(&N).
CString ¹× CByteArray RFX ÇÔ¼ö´Â µ¥ÀÌÅÍ ¿¿¡ ´ë ÇÑ °Ë»öµÈ °ªÀ» ÇÒ´ç µÈ ¸Þ¸ð¸®ÀÇ ±âº» Å©±â¸¦ ÀçÁ¤ÀÇÇÒ ¼ö ÀÖ´Â Ãß°¡ Àμö. Âü°í ´ÙÀ½ ÇÔ¼ö ¼±¾ð¿¡ nMaxLength Àμö:
void AFXAPI RFX_Text(CFieldExchange* pFX, const char *szName,
nbsp;? CString ¹× °ª, int nMaxLength = 255, int nColumnType =
?? SQL_VARCHAR);
void AFXAPI RFX_Binary(CFieldExchange* pFX, const char *szName, CByteArray& value,int nMaxLength = 255)
CString ¿¡ CByteArray´Â ±ä µ¥ÀÌÅÍ ¿À» °Ë»ö ÇÏ´Â °æ¿ì ÃÖ´ë µ¥ÀÌÅÍ ¾çÀÔ´Ï´Ù, ±âº»ÀûÀ¸·Î 255 ¹ÙÀÌÆ® ¹Ýȯ. ÀÌ ¿Ü¿¡µµ ¾Æ¹«°Íµµ ¹«½Ã µË´Ï´Ù. ÀÌ °æ¿ì ÇÁ·¹ÀÓ ¿öÅ© AFX_SQL_ERROR_DATA_TRUNCATED¿¹¿Ü¸¦ throw ÇÕ´Ï´Ù. ´ÙÇàÈ÷µµ, ¸í½ÃÀûÀ¸·Î nMaxLength MAXINT ÃÖ´ë¿¡ ´õ Å« °ªÀ¸·Î ´Ã¸± ¼ö ÀÖ½À´Ï´Ù.
ClassWizard ¹ÙÀεùÇÕ´Ï´Ù SQL_LONGVARCHAR CString¶Ç´Â SQL_LONGVARBINARY CByteArray ¸¦ ´ç½ÅÀ» À§ÇØ. 255 ¹ÙÀÌÆ® º¸´Ù ±ä µ¥ÀÌÅÍ ¿À» ÀоîµéÀÏ ÇÒ´ç ÇÏ·Á´Â °æ¿ì Nmaxlength¿¡ ´ë ÇÑ ¸í½ÃÀû °¡Ä¡¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.
±ä µ¥ÀÌÅÍ ¿ CString ¶Ç´Â CByteArray¿¡ ¹ÙÀεùµÉ ¶§ ±×³É °°Àº SQL_VARCHAR ¶Ç´ÂVARBINARYSQL_ ¹ÙÀεùµÈ °æ¿ì ÀÛµ¿ Çʵ带 ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù. ÆíÁýÇÏ´Â µ¿¾È µ¥ÀÌÅÍ °ªÀº ¸Ö¸® ij½Ã ÇÏ °í µ¥ÀÌÅÍ °ªÀÇ º¯°æ ³»¿ëÀ» °Ë»ö ÇÏ °í ÇØ´ç ¿¿¡ ´ë ÇÑ ´õ·¯¿î ¹× Null °ªÀ» ÀûÀý ÇÏ °Ô ¼³Á¤ ÇÏ·Á¸é ¾÷µ¥ÀÌÆ® ¸¦ È£Ãâ ÇÏ¸é ³ªÁß¿¡ ºñ±³¡£
Clongbinary¿¡ ±ä µ¥ÀÌÅÍ ¿À» ¹ÙÀεù
°æ¿ì¿¡ ±ä µ¥ÀÌÅÍ ¿¿¡´Â ´õ ¸¹Àº MAXINT ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅͰ¡ Æ÷ÇÔ µÉ ¼ö ÀÖ½À´Ï´Ù, ´ç½ÅÀº ¾Æ¸¶ °í·ÁÇØ CLongBinary ¿¡ °Ë»ö¡£
ÀåÁ¡:
ÀÌ »ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®¸¦ ÃÖ´ë Àüü ±ä µ¥ÀÌÅÍ ¿-°Ë»ö¡£
´ÜÁ¡:
µ¥ÀÌÅ͸¦ ¸Þ¸ð¸®¿¡ º¸°ü µË´Ï´Ù. ÀÌ Á¢±Ù¹ýÀº ¶ÇÇÑ ¸Å¿ì ¸¹Àº ¾çÀÇ µ¥ÀÌÅÍ¿¡ ´ë ÇÑ ¾öû³ª°Ô ºñ½Î´Ù. ÇÊµå ¾÷µ¥ÀÌÆ® ÀÛ¾÷¿¡ Æ÷ÇÔ µÇµµ·Ï ¹ÙÀεùµÈ µ¥ÀÌÅÍ ¸â¹ö¿¡ ´ë ÇÑ SetFieldDirty ¸¦ È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù.
CLongBinary¿¡ long µ¥ÀÌÅÍ ¿À» °Ë»ö ÇÏ´Â °æ¿ì µ¥ÀÌÅͺ£À̽º Ŭ·¡½º´Â ±ä µ¥ÀÌÅÍ ¿ÀÇ ÃÑ Å©±â¸¦ È®ÀÎ ÇÏ ´ÙÀ½ Àüü µ¥ÀÌÅÍ °ªÀ» ÀúÀåÇÒ ¼ö ÀÖÀ» ¸¸Å Å« HGLOBAL ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¸¦ ÇÒ´çÇÒ °ÍÀÔ´Ï´Ù. µ¥ÀÌÅͺ£À̽º Ŭ·¡½º´Â ´ÙÀ½ ÇÒ´çµÈ HGLOBAL À¸·Î Àüü µ¥ÀÌÅÍ °ªÀ» °Ë»ö¡£
µ¥ÀÌÅÍ ¼Ò½º´Â ±ä µ¥ÀÌÅÍ ¿ÀÇ ¿¹»óµÈ Å©±â¸¦ ¹ÝȯÇÒ ¼ö ¾ø½À´Ï´Ù, ÇÁ·¹ÀÓ ¿öÅ©¿¡¼ AFX_SQL_ERROR_SQL_NO_TOTAL¿¹¿Ü¸¦ throw ÇÕ´Ï´Ù. Ç¥ÁØ ¸Þ¸ð¸® ¿¹¿Ü throw HGLOBAL ÇÒ´çÇÒ ½Ãµµ°¡ ½ÇÆÐ ÇÏ´Â °æ¿ì¡£
ClassWizard ¹ÙÀεùÇÕ´Ï´Ù SQL_LONGVARCHAR ¶Ç´Â SQL_LONGVARBINARY CLongBinary ¸¦ ´ç½ÅÀ» À§ÇØ. CLongBinary ¸â¹ö º¯¼ö Ãß°¡ ´ëÈ »óÀÚ¿¡¼ º¯¼ö À¯ÇüÀ» ¼±Åà ÇÕ´Ï´Ù. ClassWizard ´ÙÀ½ DoFieldExchange ¸¦ È£Ãâ ÇÏ´Â RFX_LongBinary È£ÃâÀ» Ãß°¡ ÇÏ °í ¹ÙÀεùµÈ ÇʵåÀÇ ÃÑ ¼ö¸¦ Áõ°¡¡£
±ä µ¥ÀÌÅÍ ¿ °ªÀ» ¾÷µ¥ÀÌÆ® ÇÏ·Á¸é ¸ÕÀú È£Ãâ ÇÏ ¿© »õ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖÀ» ¸¸Å Å« ÇÒ´çµÈ HGLOBAL ÀÎÁö È®ÀÎ :: GlobalSize CLongBinary ±×·± ¸â¹ö¿¡. ³Ê¹« ÀÛÀº °æ¿ì HGLOBAL ³õ°í Çϳª ÀûÀý ÇÑ Å©±â¸¦ ÇÒ´ç ÇÕ´Ï´Ù. ±×·± ´ÙÀ½ »õ Å©±â¸¦ ¹Ý¿µ Çϵµ·Ï m_dwDataLength ¼³Á¤¡£
±×·¸Áö ¾ÊÀ¸¸é, m_dwDataLength ´ëü ÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â º¸´Ù Å« °æ¿ì, ¹«·á ¹× HGLOBALÀ» ÀçÇÒ´ç Çϰųª ÇÒ´ç ±×°ÍÀ» µÎ°í. M_dwDataLength ¿¡¼ ½ÇÁ¦·Î »ç¿ë µÈ ¹ÙÀÌÆ® ¼ö¸¦ ³ªÅ¸³À´Ï´Ù ÀÖ´ÂÁö È®ÀΡ£
ÀÛµ¿ ÇÏ´Â ¹æ¹ý ¾÷µ¥ÀÌÆ®´Â CLongBinary
CLongBinary ¾÷µ¥ÀÌÆ® ÀÛµ¿ ÇÏ´Â ¹æ¹ýÀ» ÀÌÇØ ÇÏ´Â °ÍÀÌ ÇÊ¿ä ÇÏÁö ¾Ê½À´Ï´Ù ÇÏÁö¸¸ ±ä µ¥ÀÌÅÍ °ª µ¥ÀÌÅÍ ¿øº»¿¡ º¸³»´Â ¹æ¹ý¿¡ ´ë ÇÑ ¿¹·Î °ÍÀÌ À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù ¾Æ·¡¿¡¼ ¼³¸í ÇÏ´ÂÀÌ ¼¼ ¹øÂ° ¹æ¹ý ¼±Åà ÇÏ´Â °æ¿ì¡£
¸Þ¸ðnbsp;??¾÷µ¥ÀÌÆ®¿¡ Æ÷ÇÔ µÉ CLongBinary Çʵ忡¼ Çʵ忡 ´ë ÇÑ SetFieldDirty ¸¦ ¸í½ÃÀûÀ¸·Î È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù. Çʵ忡 Null ¼³Á¤ µî ¾î¶°ÇÑ º¯°æ SetFieldDirty ¸¦ È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù(&N).
µ¥ÀÌÅͺ£À̽º Ŭ·¡½º´Â ODBCÀÇ DATA_AT_EXEC ¸ÞÄ¿´ÏÁò »ç¿ë CLongBinary Çʵ带 ¾÷µ¥ÀÌÆ®ÇÒ ¶§ ( SQLSetPosrgbValue Àμö¿¡ ODBC ¼³¸í¼ ÂüÁ¶). ¶§ »ðÀÔÀ» Áغñ ÇÏ´Â ÇÁ·¹ÀÓ ¿öÅ© ¶Ç´Â CLongBinary ÁÖ¼Ò µ¥ÀÌÅͰ¡ Æ÷ÇÔ µÈ HGLOBAL ¸¦ °¡¸®Å°´Â ´ë½Å update ¹® ´ë½Å, ¿ °ª À¸·Î ¼³Á¤ µÇ¾î ¹× ±æÀÌ Ç¥½Ã±â´Â SQL_DATA_AT_EXEC·Î ¼³Á¤ ÇÕ´Ï´Ù. ³ªÁß¿¡, µ¥ÀÌÅÍ ¼Ò½º¿¡ update ¹®À» º¸³»¸é SQLExecDirect ´Â SQL_NEED_DATA¸¦ ¹Ýȯ ÇÕ´Ï´Ù. ÀÌ ÇÁ·¹ÀÓ ¿öÅ©¸¦ÀÌ ¿¿¡ ´ë ÇÑ ¸Å°³ º¯¼ö °ªÀº ½ÇÁ¦·Î CLongBinaryÁÖ¼Ò °æÀ¸½Ê½Ã¿À. ÇÁ·¹ÀÓ ¿öÅ© µ¥ÀÌÅÍÀÇ ½ÇÁ¦ ±æÀÌ ¹Ýȯ ÇÏ·Á¸é µå¶óÀ̹ö¸¦ ±â´ë ÇÏ °í ÀÛÀº ¹öÆÛ¸¦ °¡Áø SQLGetData ¸¦ ÇÑ ¹ø È£Ãâ ÇÕ´Ï´Ù. µå¶óÀ̹ö ÀÌÁø ´ëÇü °³Ã¼ (BLOB)ÀÇ ½ÇÁ¦ ±æÀÌ ¹Ýȯ ÇÏ´Â °æ¿ì MFC ´Ù½Ã BLOB¸¦ ÀÎÃâ ÇÏ´Â µ¥ ÇÊ¿äÇÑ ¸¹Àº °ø°£À» ÇÒ´ç ÇÕ´Ï´Ù. Datasource SQL_NO_TOTAL, ±×°ÍÀº BLOBÀÇ Å©±â¸¦ È®ÀÎÇÒ ¼ö ¾ø½À´Ï´Ù ³ªÅ¸³»´Â ¹Ýȯ ÇÏ´Â °æ¿ì MFC ÀÛÀº ºí·ÏÀ» ¸¸µì´Ï´Ù. ±âº» Ãʱâ Å©±â´Â 64 K µÇ¸ç ÈÄ¼Ó ºí·Ï Å©±âÀÇ µÎ ¹è; ¿¹¸¦ µé¾î, 128 K °ÍÀÔ´Ï´Ù µÎ ¹øÂ°, ¼¼ ¹øÂ°´Â 256 K. Ãʱâ Å©±â´Â ±¸¼ºÇÒ ¼ö¡£
±¸¼Ó·ÂÀÌ ¾ø½À´Ï´Ù: °Ë»ö/µ¥ÀÌÅÍ Àü¼Û Sqlgetdata¿Í ODBC¿¡¼ Á÷Á¢
ÀÌ ¹æ¹ýÀ¸·Î ´ç½ÅÀÌ ¿ÏÀüÈ÷ µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¸¦ ¿ìȸ¿Í °Å·¡ ±ä µ¥ÀÌÅÍ ¿°ú Àڽš£
ÀåÁ¡:
ÇÊ¿äÇÑ °æ¿ì µð½ºÅ© ¶Ç´Â µ¿ÀûÀ¸·Î ¾ó¸¶³ª ¸¹Àº °Ë»öÇÒ µ¥ÀÌÅ͸¦ °áÁ¤ÇÒ µ¥ÀÌÅ͸¦ ij½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÜÁ¡:
ÇÁ·¹ÀÓ ¿öÅ©ÀÇ ÆíÁý ¶Ç´Â AddNew Áö¿øÀÇ ¾òÀ» ÇÏÁö ¾Ê½À´Ï´Ù ÇÏ °í ÀÛ¼º ÇØ¾ß ÇÕ´Ï´Ù ÀÚ½ÅÀ» (»èÁ¦ ÀÛµ¿ ÇÏÁö¸¸, ±×°ÍÀº ¿ ¼öÁØ ÀÛ¾÷ ÀÌÈÄ) ±âº»ÀûÀÎ ±â´ÉÀ» ¼öÇàÇÒ Äڵ塣
ÀÌ °æ¿ì ±ä µ¥ÀÌÅÍ ¿ recordsetÀÇ ¼±Åà ¸ñ·Ï¿¡ ÀÖ¾î¾ß ÇÏÁö¸¸ ¾È ÇÁ·¹ÀÓ ¿öÅ©¿¡ ÀÇÇØ ¹ÙÀεùµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº GetDefaultSQL À» ÅëÇØ ¶Ç´Â CRecordset Open ÇÔ¼öÀÇ lpszSQL Àμö·Î Á÷Á¢ SQL ¹®À» Á¦°ø ÇÏ °í RFX_ ÇÔ¼ö È£Ãâ Ãß°¡ ¿¿¡ ¹ÙÀεùÇÒ ¼öÀÔ´Ï´Ù. ODBC ¾ð¹Ù¿îµå Çʵ尡 ¹ÙÀεùµÈ ÇʵåÀÇ ¿À¸¥ÂÊ¿¡ ³ªÅ¸³³´Ï´Ù ÇÊ¿ä ÇÕ´Ï´Ù, ±×¸®°í ±×·¡¼ ¾ð¹Ù¿îµå ¿ ¼±Åà ¸ñ·Ï ³¡¿¡ Ãß°¡¡£
°æ°ínbsp;??¶§¹®¿¡ long µ¥ÀÌÅÍ ¿ ÇÁ·¹ÀÓ ¿öÅ©¿¡ ÀÇÇØ ¹ÙÀεùµÇÁö ¾Ê½À´Ï´Ù º¯°æ CRecordset::Update È£ÃâÀ¸·Î ó¸® µÇÁö ¾Ê½À´Ï´Ù. ¸¸µé°í ÇÊ¿äÇÑ SQL »ðÀÔ ¹× ¾÷µ¥ÀÌÆ® ¹®À» º¸³À´Ï´Ù ÇØ¾ß ÇÕ´Ï´Ù(&N).
±â¼ú ³ëÆ® ¹øÈ£·Î |nbsp; Ä«Å×°í¸®º° ±â¼ú ³ëÆ®(&N)