วิธีการค้นคืนเค้าร่างคอลัมน์ โดยใช้เมธอด GetSchemaTable DataReader และ Visual C#สุทธิ

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 310107 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการที่ใช้เมธอดGetSchemaTableของวัตถุDataReaderใน ADOสุทธิค้นคืนข้อมูล schema ของคอลัมน์ อื่น ชื่อสำหรับเค้าร่างของคอลัมน์มีคุณสมบัติเขตข้อมูล ข้อมูล schema ของคอลัมน์ ประกอบด้วยข้อมูลเกี่ยวกับคอลัมน์ต่อไปนี้:
  • ชื่อ
  • ชนิดข้อมูล
  • ขนาด
  • คอลัมน์เป็นเขตข้อมูลคีย์หลักหรือไม่
  • ว่าคอลัมน์นี้เป็น autonumber (AutoIncrement) เขตข้อมูล
วิธีการGetSchemaTableส่งกลับคุณสมบัติDataTableที่ประกอบด้วยเค้าร่างคอลัมน์สำหรับการDataReaderDataTableมีหนึ่งแถวสำหรับแต่ละเขตข้อมูลใน resultset แต่ละคอลัมน์ การแมปกับคุณสมบัติของเขตข้อมูลใน resultset คุณสมบัติColumnNameของคอลัมน์DataTableคือชื่อของเขตข้อมูลคุณสมบัติ เช่นคุณสมบัติColumnNameชนิดข้อมูลColumnSize, IsKeyColumnหรือIsAutoIncrement ค่าของคอลัมน์DataTableคือค่าของคุณสมบัติของเขตข้อมูล เช่นFirstNameค่าสำหรับคุณสมบัติColumnName
หมายเหตุ เพื่อรับหลักคีย์ข้อมูล รวมถึงว่าเป็นเขตข้อมูล ส่วนหนึ่งของคีย์หลักและว่าเป็นเขตข้อมูลที่มีAutoIncrementคุณต้องตั้งค่าค่าCommandBehaviorของDataReaderCommandBehavior.KeyInfo

คุณสามารถใช้วิธีการGetSchemaTableด้วยอย่างใดอย่างหนึ่ง OLE DBผู้ให้บริการการสุทธิหรือ SQLสุทธิ ผู้ให้บริการ วิธีการOleDbDataReader.GetSchemaTableแมปกับวิธีการของ OLE DB IColumnsRowset::GetColumnsRowsetSqlDataReader.GetSchemaTableวิธีใช้มีชั้นบริการ OLE DB

ของบันทึกย่อ นอกจากว่าคุณใช้เมธอดGetSchemaTableอย่างชัดเจนDataReaderไม่กลับคอลัมน์ schema นอกจากนี้ ถ้าคุณใช้GetSchemaTableเพื่อดึงคอลัมน์ schema คุณไม่สามารถปรับปรุงDataReaderDataReaderเสมอเรียกกระแสข้อมูลแบบ อ่านอย่างเดียว ไปข้างหน้า อย่างเดียวของข้อมูลจากการ ฐานข้อมูล

เมื่อต้องใช้เมธอด GetSchemaTable

  • SqlConnectionวัตถุไม่สนับสนุนการเรียกข้อมูล schema ของ SQL Server ในวิธีกับเมธอดGetOleDbSchemaTableของวัตถุOleDbConnectionGetSchemaTableเมธอดของคลาSqlDataReaderมีวิธีตรงรับเค้าร่างของคอลัมน์ ข้อมูลจาก SQL Server
  • ถึงแม้ว่าเมธอดGetOleDbSchemaTableของวัตถุOleDbConnectionสามารถกลับสู่ฐานข้อมูล ตาราง และ ข้อมูล schema คอลัมน์ คุณอาจพบว่าวิธีการGetSchemaTableของวัตถุDataReaderง่ายต่อการใช้งานถ้าคุณต้องการเรียกเฉพาะคอลัมน์ ข้อมูล schema
  • คุณสามารถใช้เมธอดGetSchemaTableเพื่อสร้างใหม่DataTableขึ้นอยู่กับคุณสมบัติที่มีอยู่DataTableของ schema ในขณะที่คุณกำหนดเองชื่อคอลัมน์และอื่น ๆ แอตทริบิวต์ของคอลัมน์ สำหรับโค้ดตัวอย่างที่อธิบายวิธีการใช้GetSchemaTableเพื่อกำหนดตารางใหม่ โปรดดู "Visual Studio ตัวอย่าง: Fitch และเรียกใช้ Query SQL Mather 7.0"หัวข้อใน Microsoft Visual Studioสุทธิแบบออนไลน์ เอกสารคู่มือวิธีใช้

เรียกเค้าร่างคอลัมน์กับ OLE DBผู้ให้บริการการสุทธิ

ตัวอย่างนี้แสดงรายการข้อมูล schema สำหรับคอลัมน์ (เขตข้อมูล คุณสมบัติ) ของตารางพนักงานใน Northwind การเซิร์ฟเวอร์ SQL ฐานข้อมูล

โปรดสังเกตว่า เมื่อคุณใช้การ OLE DB นั้นผู้ให้บริการ NET ที่คุณใช้ เมธอดGetSchemaTableของวัตถุOleDbDataReader
  1. เริ่ม Visual Studioสุทธิ จากนั้น สร้างตัวใหม่ Visual C# โครงการแอพลิเคชันของคอนโซล Class1.cs ถูกสร้างขึ้น โดยค่าเริ่มต้น
  2. เปิดหน้าต่างรหัสสำหรับ Class1 วางรหัสต่อไปนี้ ที่ด้านบนของหน้าต่างโค้ดอยู่เหนือการประกาศnamespace :
    using System.Data;
    using System.Data.OleDb;
    					
  3. ในหน้าต่างรหัส วางโค้ดต่อไปนี้ในฟังก์ชันหลัก:
    OleDbConnection cn = new OleDbConnection();
    OleDbCommand cmd = new OleDbCommand();
    DataTable schemaTable; 
    OleDbDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo); 
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. การปรับเปลี่ยนพารามิเตอร์ของคุณสมบัติของสายอักขระการเชื่อมต่อกับ SQL Server ของคุณอย่างถูกต้อง คอมพิวเตอร์
  5. กดแป้น F5 เพื่อคอมไพล์ และเรียกใช้โครงการ แจ้งให้ทราบ ว่า คุณสมบัติของแต่ละเขตข้อมูลจะแสดงรายการในหน้าต่างคอนโซล
  6. กด ENTER เพื่อเลื่อนดูรายการ คอนโซลที่สิ้นสุด แอพลิเคชัน และกลับไปยังสภาพแวดล้อมการพัฒนาแบบครบวงจร (IDE)

เรียกเค้าร่างคอลัมน์ ด้วย SQLผู้ให้บริการการสุทธิ

ตัวอย่างนี้แสดงรายการข้อมูล schema สำหรับคอลัมน์ (เขตข้อมูล คุณสมบัติ) ของตารางพนักงานใน Northwind การเซิร์ฟเวอร์ SQL ฐานข้อมูล

โปรดสังเกตว่า เมื่อคุณใช้ SQLผู้ให้บริการ NET คุณใช้เมธอดGetSchemaTableของวัตถุSqlDataReader
  1. เริ่ม Visual Studioสุทธิ และสร้างคำใหม่ Visual C# โครงการแอพลิเคชันของคอนโซล Class1.cs ถูกสร้างขึ้น โดยค่าเริ่มต้น
  2. เปิดหน้าต่างรหัสสำหรับ Class1 วางรหัสต่อไปนี้ ที่ด้านบนของหน้าต่างโค้ดอยู่เหนือการประกาศnamespace :
    using System.Data;
    using System.Data.SqlClient;
    					
  3. ในหน้าต่างรหัส วางโค้ดต่อไปนี้ในฟังก์ชันหลัก:
    SqlConnection cn = new SqlConnection();
    SqlCommand cmd = new SqlCommand();
    DataTable schemaTable; 
    SqlDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. การปรับเปลี่ยนพารามิเตอร์ของคุณสมบัติของสายอักขระการเชื่อมต่อกับ SQL Server ของคุณอย่างถูกต้อง คอมพิวเตอร์
  5. กด F5 เพื่อคอมไพล์ และเรียกใช้โครงการ สังเกตว่า แสดงคุณสมบัติของแต่ละเขตข้อมูลในหน้าต่างคอนโซล
  6. กด ENTER เพื่อเลื่อนดูรายการ คอนโซลที่สิ้นสุด แอพลิเคชัน และกลับไปยัง IDE

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับDataReaderและวิธีการGetSchemaTableดูหัวข้อต่อไปนี้ใน Visual Studioสุทธิแบบออนไลน์ เอกสารประกอบ'วิธีใช้':
รับข้อมูลโดยใช้การ DataReader

วิธีการ IDataReader.GetSchemaTable

หมายเหตุ: หัวข้อนี้ประกอบด้วยรายการทั้งหมดของคอลัมน์ในตัว DataTableส่งคืน

วิธีการ OleDbDataReader.GetSchemaTable

วิธีการ SqlDataReader.GetSchemaTable
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้เมธอดGetOleDbSchemaTableของวัตถุOleDbConnectionค้นคืนข้อมูล schema ให้คลิกหมายเลขบทความ ด้านล่างนี้เพื่อดูบทความใน Microsoft Knowledge Base:
309681 วิธีการค้นคืนข้อมูล Schema โดยใช้ GetOleDbSchemaTable และ Visual C#สุทธิ

คุณสมบัติ

หมายเลขบทความ (Article ID): 310107 - รีวิวครั้งสุดท้าย: 12 มิถุนายน 2555 - Revision: 5.0
ใช้กับ
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbdatabase kbhowtomaster kbsqlclient kbsystemdata kbmt KB310107 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:310107

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com