โมฆะ 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)