-
คำอธิบายโดยละเอียดของ C# DataSet และ DataTable
2552-พฤหัสบดี-21
1. สร้างวัตถุชุดข้อมูล:
ชุดข้อมูล ds = ชุดข้อมูลใหม่ ("DataSetName");
2. ดูโครงสร้างที่สร้างขึ้นโดยการเรียก SqlDataAdapter.Fill
da.Fill(ds,"คำสั่งซื้อ");
DataTable tbl = ds.Table[ศูนย์];
foreach (คอลัมน์ DataColumn ใน tbl.Columns)
Console.WriteLine (col.ColumnName);
3. ดูข้อมูลที่ส่งคืนโดย SqlDataAdapter 1, วัตถุ DataRow
DataTable tbl = ds.Table[ศูนย์];
แถวข้อมูล = tbl.Row[ศูนย์];
Console.WriteLine(ros["OrderID"]);
② ตรวจสอบข้อมูลที่จัดเก็บไว้ใน DataRow
DataTable tbl = แถว.ตาราง;
foreach (คอลัมน์ DataColumn ใน tbl.Columns)
Console.WriteLine (แถว [คอลัมน์]);
3. ตรวจสอบวัตถุ DataRow ใน DatTable
foreach (แถว DataRow ใน tbl.Rows)
DisplayRow(แถว);
4. ตรวจสอบข้อมูลในชุดข้อมูล 1 ตรวจสอบคุณสมบัติของ DataColumn: ReadOnly, AllowDBNull, MaxLength, Unique
② จำกัดการรวมวัตถุ DataTable: UiqueConstraints, Primarykey, ForeignkeyConstraints
โดยปกติแล้ว ไม่จำเป็นต้องกังวลกับการสร้าง ForeignkeyConstraints เนื่องจากความสัมพันธ์จะถูกสร้างขึ้นเมื่อมีการสร้างความสัมพันธ์ระหว่างวัตถุ DataTable สองวัตถุในชุดข้อมูล
3. ใช้เมธอด SqlDataAdapter.Fill เพื่อดึงข้อมูลเมธอด
5. คอมไพล์โค้ดเพื่อสร้างวัตถุ DataTable
1. สร้างวัตถุ DataTable: DataTable tbl = new DataTable("TableName");
② เพิ่ม DataTable เข้ากับการบรรจบกันของตารางของวัตถุ DataSet
ชุดข้อมูล ds = ชุดข้อมูลใหม่ ();
DataTable tbl = DataTable ใหม่ ("ลูกค้า");
ds.Tables.Add(tbl);
ชุดข้อมูล ds = ชุดข้อมูลใหม่ ();
DataTable tbl = ds.Tables.Add("ลูกค้า");
วัตถุ DataTable สามารถมีอยู่ในวัตถุชุดข้อมูลได้ไม่เกินหนึ่งวัตถุเท่านั้น หากคุณต้องการเพิ่ม DataTable ลงในชุดข้อมูลหลายชุด คุณต้องใช้ขั้นตอนการคัดลอกหรือขั้นตอนการโคลน ขั้นตอนการคัดลอกจะสร้าง DataTable ใหม่ที่มีโครงสร้างเหมือนกับ DataTable ดั้งเดิมและมีแถวที่คล้ายกัน ขั้นตอน Clone จะสร้าง DataTable ใหม่ที่มีโครงสร้างเหมือนกับ DataTable ดั้งเดิม แต่ไม่มีแถวใดๆ
3. เพิ่มคอลัมน์ลงใน DataTable
DataTable tbl = ds.Tables.Add("คำสั่งซื้อ");
DataColumn col =tbl.Columns.Add("OrderID",typeof(int));
col.AllowDBNull = เท็จ;
col.MaxLength = ห้า;
col.Unique = จริง;
tbl.PrimaryKey = DataColumn ใหม่[]{tbl.Columns["CustomersID"]};
เมื่อควรตั้งค่าคีย์หลัก AllowDBNull จะถูกตั้งค่าเป็น False โดยอัตโนมัติ
④ กำจัดคอลัมน์ที่เพิ่มขึ้นอัตโนมัติ
ชุดข้อมูล ds = ชุดข้อมูลใหม่ ();
DataTable tbl = ds.Tables.Add("คำสั่งซื้อ");
DataColumn col = tbl.Columns.Add("OrderID",typeof(int));
col.AutoIncrease = จริง;
col.AutoIncreaseSeed = -1;
col.AutoIncreaseStep = -1;
col.ReadOnly = จริง;
⑤ เพิ่มคอลัมน์ตามนิพจน์
tbl.Columns.Add("ItemTotal",typeof(ทศนิยม),"ปริมาณ*ราคาต่อหน่วย");
6. แก้ไขเนื้อหา DataTable 1 เพิ่ม DataRow ใหม่
แถว DataRow = ds.Tables["ลูกค้า"].NewRow();
แถว["รหัสลูกค้า"] = "ALFKI";
ds.Tables["ลูกค้า"].Rows.Add(แถว);
object[] aValues ={"ALFKI", "อัลเฟรดส์", "แอนเดอร์ส", "030-22222"};
da.Tables["ลูกค้า"].LoadDataRow(aValues,false);
②. อยู่ระหว่างดำเนินการแก้ไข
การแก้ไขเนื้อหาของแถวจะไม่ปรับเปลี่ยนเนื้อหาที่เกี่ยวข้องในฐานข้อมูลโดยอัตโนมัติ การแก้ไขแถวจะถือเป็นการเปลี่ยนแปลงที่รอดำเนินการซึ่งจะถูกส่งไปยังฐานข้อมูลในภายหลังโดยใช้วัตถุ SqlDataAdapter
DataRow แถวลูกค้า;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
ถ้า (แถวลูกค้า == null)
//ไม่หาลูกค้า
อื่น
-
rowCustomer["CompanyName"] = "ชื่อบริษัทใหม่";
rowCustomer["ชื่อผู้ติดต่อ"] = "ชื่อผู้ติดต่อใหม่";
-
//แนะนำให้ใช้แบบฟอร์มนี้
DataRow แถวลูกค้า;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
ถ้า (แถวลูกค้า == null)
//ไม่หาลูกค้า
อื่น
-
rowCustomer.BeginEdit();
rowCustomer["CompanyName"] = "ชื่อบริษัทใหม่";
rowCustomer["ชื่อผู้ติดต่อ"] = "ชื่อผู้ติดต่อใหม่";
rowCustomer.EndEdit();
-
//null หมายถึงไม่ต้องแก้ไขข้อมูลในคอลัมน์นี้
obejct[] ลูกค้า ={null, "NewCompanyName", "NewContactName", null}
DataRow แถวลูกค้า;
rowCustomer = ds.Tables["ลูกค้า"].Rows.Find("ALFKI");
rowCustomer.ItemArray = ลูกค้า;
3. จัดการค่าว่างของ DataRow
//ตรวจสอบว่าว่างเปล่าหรือไม่
DataRow แถวลูกค้า;
rowCustomer = ds.Tables["ลูกค้า"].Rows.Find("ALFKI");
if(rowCustomer.IsNull("โทรศัพท์"))
Console.WriteLine("มันเป็นโมฆะ");
อื่น
Console.WriteLine("มันไม่ว่าง");
//ให้ค่าว่าง
rowCustomer["โทรศัพท์"] = DBNull.Value;
④ กำจัด DataRow
DataRow แถวลูกค้า;
rowCustomer = ds.Tables["ลูกค้า"].Rows.Find("ALFKI");
rowCustomer.Delete();
⑤ กำจัด DataRow
DataRow rowCustomer = ds.Tables["ลูกค้า"].Rows.Find("ALFKI");
rowCustomer.ItemArray = ลูกค้า;
da.Tables["ลูกค้า"].ลบ(rowCustomer);
บางที
ds.Tables["ลูกค้า"].RemoveAt(intIndex);
⑥ ใช้คุณสมบัติ DataRow.RowState: ไม่เปลี่ยนแปลง แยกออก เพิ่ม แก้ไข ลบแล้ว
โมฆะส่วนตัว DemonstrateRowState ()
{ // เรียกใช้ฟังก์ชันเพื่อสร้าง DataTable ด้วยหนึ่งคอลัมน์
// สร้าง DataRow.myRow = myTable.NewRow(); // Detached row.WriteLine("New Row " + myRow.RowState);
myTable.Rows.Add(myRow); // แถวใหม่ Console.WriteLine("AddRow " + myRow.RowState);
myTable.AcceptChanges(); // แถวที่ไม่เปลี่ยนแปลง Console.WriteLine("AcceptChanges " + myRow.RowState);
myRow["FirstName"] = "Scott"; // แก้ไขแถว Console.WriteLine ("แก้ไข" + myRow.RowState);
myRow.Delete(); // แถวที่ถูกลบ Console.WriteLine("ลบแล้ว " + myRow.RowState);
⑦ ตรวจสอบการเปลี่ยนแปลงที่รอดำเนินการใน DataRow
DataRow แถวลูกค้า;
rowCustomer = ds.Tables["ลูกค้า"].Rows.Find("ALFKI");
rowCustomer["CompanyName"] = "ชื่อบริษัทใหม่";
สตริง strNewCompanyName, strOldCompanyName;
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Current]);
Console.WriteLine (แถวลูกค้า ["ชื่อบริษัท", DataRowVersion.Original]);
1. ชุดข้อมูล
1、คุณสมบัติ
CaseSensitive: ใช้เพื่อควบคุมว่าการเปรียบเทียบสตริงใน DataTable คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่หรือไม่
สูงสุด
ที่มาของบทความนี้:
เครือข่ายที่ผิดปกติของฉัน
JavaException
DotnetException
ออราเคิล