ManufacturedDataSet.cs
上传用户:lxycoco
上传日期:2022-07-21
资源大小:38457k
文件大小:4k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. public class ManufacturedDataset
  5. {
  6. public static void Main ( )
  7. {
  8. string    source = Login.Connection ;
  9. string         select = "SELECT * FROM Products" ;
  10. string         sel2   = "SELECT * FROM Categories" ;
  11. using ( SqlConnection  conn = new SqlConnection ( source ) )
  12. {
  13. SqlDataAdapter da = new SqlDataAdapter ( select , conn ) ;
  14. DataSet       ds = new DataSet ( ) ;
  15. // Create the products table
  16. ManufactureProductDataTable ( ds ) ;
  17.     
  18. da.Fill ( ds , "Products" ) ;
  19. foreach ( DataRow row in ds.Tables["Products"].Rows )
  20. Console.WriteLine ( "'{0}' from {1}" , 
  21. row[0] ,
  22. row[1] ) ;
  23. SqlDataAdapter da2 = new SqlDataAdapter ( sel2 , conn ) ;
  24. // Now create the category table
  25. ManufactureCategoryTable ( ds ) ;
  26. da2.Fill ( ds , "Categories" ) ;
  27. // And add a foreign key constraint between the products & categories tables
  28. AddForeignKeyConstraint ( ds ) ;
  29. conn.Close ( ) ;
  30. }
  31. }
  32. public static void ManufactureProductDataTable ( DataSet ds )
  33. {
  34. DataTable   products = new DataTable ( "Products" ) ;
  35. products.Columns.Add ( new DataColumn ( "ProductID" ,       typeof ( int ) ) ) ;
  36. products.Columns.Add ( new DataColumn ( "ProductName" ,     typeof ( string ) ) ) ;
  37. products.Columns.Add ( new DataColumn ( "SupplierID" ,      typeof ( int ) ) ) ;
  38. products.Columns.Add ( new DataColumn ( "CategoryID" ,      typeof ( int ) ) ) ;
  39. products.Columns.Add ( new DataColumn ( "QuantityPerUnit" , typeof ( string ) ) ) ;
  40. products.Columns.Add ( new DataColumn ( "UnitPrice" ,       typeof ( decimal ) ) ) ;
  41. products.Columns.Add ( new DataColumn ( "UnitsInStock" ,    typeof ( short ) ) ) ;
  42. products.Columns.Add ( new DataColumn ( "UnitsOnOrder" ,    typeof ( short ) ) ) ;
  43. products.Columns.Add ( new DataColumn ( "ReorderLevel" ,    typeof ( short ) ) ) ;
  44. products.Columns.Add ( new DataColumn ( "Discontinued" ,    typeof ( bool ) ) ) ;
  45. ManufacturePrimaryKey ( products ) ;
  46. ds.Tables.Add ( products ) ;
  47. }
  48. public static void ManufacturePrimaryKey ( DataTable dt )
  49. {
  50. DataColumn[]  pk = new DataColumn[1] ;
  51.     
  52. pk[0] = dt.Columns["ProductID"] ;
  53. dt.Constraints.Add ( new UniqueConstraint ( "PK_Products" , pk[0] ) ) ;
  54. dt.PrimaryKey = pk ;
  55.     
  56. }
  57. public static void ManufactureCategoryTable ( DataSet ds )
  58. {
  59. DataTable   categories = new DataTable ( "Categories" ) ;
  60. categories.Columns.Add ( new DataColumn ( "CategoryID" ,   typeof ( int )    ) ) ;
  61. categories.Columns.Add ( new DataColumn ( "CategoryName" , typeof ( string ) ) ) ;
  62. categories.Columns.Add ( new DataColumn ( "Description" ,  typeof ( string ) ) ) ;
  63. categories.Constraints.Add ( new UniqueConstraint ( "PK_Categories" , categories.Columns["CategoryID"] ) ) ;
  64. categories.PrimaryKey = new DataColumn[1] { categories.Columns["CategoryID"] } ;
  65. ds.Tables.Add ( categories ) ;
  66. }
  67. public static void AddForeignKeyConstraint ( DataSet ds )
  68. {
  69. DataColumn            parent = ds.Tables["Categories"].Columns["CategoryID"] ;
  70. DataColumn            child  = ds.Tables["Products"].Columns["CategoryID"] ;
  71. ForeignKeyConstraint  fk = new ForeignKeyConstraint ( "FK_Product_CategoryID" , parent , child ) ;
  72.     
  73. fk.UpdateRule = Rule.Cascade ;
  74. fk.DeleteRule = Rule.SetNull ;
  75. // Create the constraint
  76. // If this fails, you have a row in the products table with no associated category
  77. ds.Tables["Products"].Constraints.Add ( fk ) ;
  78. }
  79. }