CRecordset::GetFieldValue

โมฆะ GetFieldValue (LPCTSTR lpszNameCDBVariantamp varValueสั้นnFieldType= DEFAULT_FIELD_TYPE);
โยน (CDBException, CMemoryException);(&A)

โมฆะ GetFieldValue (สั้น nIndexCDBVariantamp varValueสั้นnFieldType= DEFAULT_FIELD_TYPE);
โยน (CDBException, CMemoryException);(&A)

โมฆะ GetFieldValue (LPCTSTR lpszNameCStringampstrValue(&A) );
โยน (CDBException, CMemoryException);

โมฆะ GetFieldValue (สั้น nIndexCStringampstrValue(&A) );
โยน (CDBException, CMemoryException);

พารามิเตอร์

lpszName

ชื่อของเขตข้อมูล?

varValue

การอ้างอิงไปยังวัตถุที่CDBVariantที่จะเก็บค่าของเขตข้อมูล?

nFieldType

ชนิดข้อมูล ODBC C ของเขตข้อมูล ใช้ค่าเริ่มต้นDEFAULT_FIELD_TYPEบังคับGetFieldValueเพื่อตรวจสอบชนิดข้อมูล C จาก SQL ชนิดข้อมูล ยึดตามตารางต่อไปนี้ มิฉะนั้น คุณสามารถระบุข้อมูลพิมพ์โดยตรง หรือเลือกชนิดข้อมูลที่เข้ากันได้ ตัวอย่างเช่น คุณสามารถจัดเก็บชนิดข้อมูลใด ๆ ลงในSQL_C_CHAR?

ชนิดข้อมูล c ชนิดข้อมูล SQL
SQL_C_BIT SQL_BIT
SQL_C_UTINYINT SQL_TINYINT
SQL_C_SSHORT SQL_SMALLINT
SQL_C_SLONG SQL_INTEGER
SQL_C_FLOAT SQL_REAL
SQL_C_DOUBLE ได้ SQL_FLOAT
SQL_DOUBLE
SQL_C_TIMESTAMP SQL_DATE
SQL_TIME
SQL_TIMESTAMP
SQL_C_CHAR SQL_NUMERIC
SQL_DECIMAL
SQL_BIGINT
SQL_CHAR
SQL_VARCHAR
SQL_LONGVARCHAR
SQL_C_BINARY SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับชนิดข้อมูล ODBC ดูหัวข้อ "ชนิดข้อมูล SQL" และ "C ชนิดข้อมูล" ในภาคผนวก D ของการอ้างอิงของ ODBC SDK Programmer?

nIndex

Zero-based ดัชนีของเขตข้อมูล?

strValue

การอ้างอิงไปยังวัตถุที่CStringที่จะเก็บค่าของเขตข้อมูลที่ถูกแปลงเป็นข้อความ คำนึงถึงชนิดข้อมูลของเขตข้อมูล?

หมายเหตุ

เรียกฟังก์ชันนี้สมาชิกเพื่อดึงข้อมูลในเขตข้อมูลในระเบียนปัจจุบัน คุณสามารถค้นหาเขตข้อมูล ตามชื่อ หรือ โดยดัชนี คุณสามารถเก็บค่าเขตข้อมูลในวัตถุCDBVariantหรือวัตถุCString?

ถ้าคุณได้ดำเนินการเป็นกลุ่มแถวกำลังนำมา ระเบียนปัจจุบันคือตำแหน่งบนระเบียนแรกใน rowset เสมอ การใช้GetFieldValueบนระเบียนภายใน rowset ที่กำหนด คุณต้องเรียกใช้ฟังก์ชันสมาชิกSetRowsetCursorPositionเพื่อย้ายเคอร์เซอร์ไปยังแถวที่ต้องการภายในที่ rowset จึง เรียกGetFieldValueสำหรับแถวที่ การนำมาใช้เป็นกลุ่มแถวกำลังนำ คุณต้องระบุตัวเลือกCRecordset::useMultiRowFetchในพารามิเตอร์dwOptionsในฟังก์ชันสมาชิกเปิด?

คุณสามารถใช้GetFieldValueในการนำมาใช้เขตข้อมูลที่รันไทม์ไม่ใช่คอนผูกขณะออกแบบไดนามิก ตัวอย่างเช่น ถ้าคุณมีประกาศวัตถุ recordset โดยตรงจากCRecordsetคุณต้องใช้GetFieldValueในการเรียกข้อมูลในเขตข้อมูล เขตข้อมูลบันทึก exchange (RFX), หรือการแลกเปลี่ยนเขตข้อมูลระเบียนจำนวนมาก (Bulk RFX), จะไม่ถูกนำมาใช้?

หมายเหตุnbsp  ถ้าคุณประกาศวัตถุ recordset โดยไม่ต้องมาจากCRecordsetไม่มี ODBC เคอร์เซอร์ไลบรารีโหลด เคอร์เซอร์ไลบรารีที่ต้องชุดระเบียนมีคอลัมน์ที่ถูกผูกไว้อย่างน้อยหนึ่ง อย่างไรก็ตาม เมื่อคุณใช้CRecordsetโดยตรง การไม่มีคอลัมน์ถูกผูกไว้ สมาชิกฟังก์ชันตัวควบคุมCDatabase::OpenExและCDatabase::Openว่าจะมีการโหลดเคอร์เซอร์ไลบรารี(&N)?

GetFieldValueเรียกใช้ฟังก์ชัน ODBC API SQLGetData ถ้าโปรแกรมควบคุมการแสดงผลค่าSQL_NO_TOTALสำหรับความยาวของค่าเขตข้อมูลแท้จริงGetFieldValueผิดข้อยกเว้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับSQLGetDataดูการอ้างอิงของ ODBC SDK Programmer?

ตัวอย่าง

ตัวอย่างรหัสต่อไปนี้แสดงการเรียกไปยังGetFieldValueสำหรับวัตถุ recordset ที่ประกาศโดยตรงจากCRecordset?

/ / สร้าง และเปิดวัตถุฐานข้อมูล
/ / โหลดเคอร์เซอร์ไลบรารี
CDatabase db
dbOpenEx (NULL, CDatabase::forceOdbcDialog);

/ / สร้าง และเปิดวัตถุ recordset
/ / โดยตรง จาก CRecordset โปรดสังเกตว่า การ
/ / ตารางต้องมีอยู่ในฐานข้อมูลเชื่อมต่อ
/ / ใช้ชุดระเบียนประเภท forwardOnly ที่ดีที่สุด
/ / ประสิทธิภาพ ตั้งแต่ MoveNext เท่าที่จำเป็น
อาร์เอส CRecordset (แอมป์ db);
อาร์เอสเปิด (CRecordset::forwardOnly
         _T ("เลือก * จาก SomeTable "));

/ / สร้างวัตถุ CDBVariant ในการ
/ / การจัดเก็บข้อมูลในเขตข้อมูล
CDBVariant varValue

/ / ทำวนซ้ำชุดระเบียน
/ / การใช้ GetFieldValue และ
/ / GetODBCFieldCount ในการเรียก
/ / ข้อมูลในคอลัมน์ทั้งหมด
สั้น nFields =อาร์เอสGetODBCFieldCount ()
ในขณะที่ (! อาร์เอสIsEOF ())
{
   สำหรับ (สั้นดัชนี = 0 การทำดัชนี < nFields ดัชนี ++)
   {
      อาร์เอสGetFieldValue (ดัชนี varValue);
      / / ทำอะไรกับ varValue
   }
   อาร์เอสMoveNext ()
}

อาร์เอสปิด()
db(ปิด)

หมายเหตุnbsp  แตกต่างจากคลา DAO CDaoRecordset, CRecordsetไม่มีฟังก์ชันสมาชิกSetFieldValue ถ้าคุณสร้างวัตถุได้โดยตรงจากCRecordsetเป็นอย่างมีประสิทธิภาพเป็นแบบอ่านอย่างเดียว(&N)?

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขนาดใหญ่กำลังนำมาแถว ให้ดูบทความ ชุดระเบียน: กำลังนำระเบียนในกลุ่ม (ODBC)ในVisual c ++ Programmer ของคำแนะนำ?

ภาพรวม CRecordset |nbsp สมาชิกของคลาส| แผนภูมิของลำดับชั้น(&N)

ดูเพิ่มเติมnbspCRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition(&N)

Index