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

C#编程

开发平台:

Others

  1. using System;
  2. using System.Data;
  3. using System.Xml;
  4. using System.Data.SqlClient;
  5. using System.Data.OleDb;
  6. /// <summary>
  7. /// Corresponds to section titled 'Updating via DataAdapters' in Chapter 11
  8. /// </summary>
  9. public class DataAdapter
  10. {
  11. /// <summary>
  12. /// DataAdapter2 - show Stored Procs and DataAdapter
  13. /// </summary>
  14. public static void Main ( )
  15. {
  16. // The following is the database connection string
  17. string source = Login.Connection;
  18. // Create & open the database connection
  19. SqlConnection conn = new SqlConnection ( source ) ;
  20. conn.Open ( ) ;
  21. // Create a DataSet
  22. DataSet ds = new DataSet ( ) ;
  23. // Create a Region DataTable
  24. CreateTable ( ds ) ;
  25. // Create a data adapter to fill the DataSet
  26. SqlDataAdapter da = new SqlDataAdapter ( ) ;
  27. // Set the data adapters select co
  28. da.SelectCommand = GenerateSelectCommand ( conn ) ;
  29. da.InsertCommand = GenerateInsertCommand ( conn ) ;
  30. da.UpdateCommand = GenerateUpdateCommand ( conn ) ;
  31. da.DeleteCommand = GenerateDeleteCommand ( conn ) ;
  32. // Execute the Select Command to fill the dataset
  33. da.Fill ( ds , "Region" ) ;
  34. DumpDataSet ( ds , "Initial data selected from database" ) ;
  35. // Add a new row into the dataset
  36. DataRow r = ds.Tables["Region"].NewRow() ;
  37. r["RegionID"]=999;
  38. r["RegionDescription"]="North West" ;
  39. // Add the row into the DataTable
  40. ds.Tables["Region"].Rows.Add ( r ) ;
  41. DumpDataSet ( ds , "New row pending inserting into database" ) ;
  42. // And use the data adapter to update the table
  43. da.Update ( ds , "Region" ) ;
  44. DumpDataSet ( ds , "New row updated and new RegionID assigned by database" ) ;
  45. // Capture the regionID for later...
  46. string regionID = r[0].ToString ( ) ;
  47. // Now update something that's already there
  48. r["RegionDescription"]="North West England";
  49. DumpDataSet ( ds , string.Format ( "Changed RegionID {0} description" , regionID ) ) ;
  50. // And use the data adapter to update the table
  51. da.Update ( ds , "Region" ) ;
  52. // And finally delete the row I added...
  53. r.Delete();
  54. DumpDataSet ( ds , string.Format ( "Deleted RegionID {0}" , regionID ) ) ;
  55. // And use the data adapter to update the table
  56. da.Update ( ds , "Region" ) ;
  57. // Example .XML files used late in this chapter.
  58. ds.WriteXml ( ".\WithoutSchema.xml" ) ;
  59. ds.WriteXml ( ".\WithSchema.xml" , XmlWriteMode.WriteSchema ) ;
  60. }
  61. /// <summary>
  62. /// Dump the contents of the dataset to the console
  63. /// </summary>
  64. /// <param name="ds">The dataset</param>
  65. /// <param name="message">A message to output</param>
  66. private static void DumpDataSet ( DataSet ds , string message )
  67. {
  68. Console.WriteLine ( message ) ;
  69. foreach ( DataRow aRow in ds.Tables["Region"].Rows )
  70. {
  71. if ( aRow.RowState == DataRowState.Deleted )
  72. Console.WriteLine ( "Row Deleted" ) ;
  73. else
  74. Console.WriteLine ( "  {0,-3} {1,-50} {2}" , aRow[0] , aRow[1] , aRow.RowState ) ;
  75. }
  76. }
  77. /// <summary>
  78. /// Create a command that will select all region records
  79. /// </summary>
  80. /// <param name="conn">The database connection</param>
  81. /// <returns>A SqlCommand</returns>
  82. private static SqlCommand GenerateSelectCommand ( SqlConnection conn )
  83. {
  84. SqlCommand  aCommand = new SqlCommand ( "RegionSelect" , conn ) ;
  85. aCommand.CommandType = CommandType.StoredProcedure ;
  86. aCommand.UpdatedRowSource = UpdateRowSource.None ;
  87. return aCommand ;
  88. }
  89. /// <summary>
  90. /// Create a command that will update a region record
  91. /// </summary>
  92. /// <param name="conn">The database connection</param>
  93. /// <returns>A SqlCommand</returns>
  94. private static SqlCommand GenerateUpdateCommand ( SqlConnection conn )
  95. {
  96. SqlCommand  aCommand = new SqlCommand ( "RegionUpdate" , conn ) ;
  97. aCommand.CommandType = CommandType.StoredProcedure ;
  98. aCommand.Parameters.Add ( new SqlParameter ( "@RegionID" , SqlDbType.Int , 0 , "RegionID" ) ) ;
  99. aCommand.Parameters.Add ( new SqlParameter ( "@RegionDescription" , SqlDbType.NChar , 50 , "RegionDescription" ) ) ;
  100. aCommand.UpdatedRowSource = UpdateRowSource.None ;
  101. return aCommand ;
  102. }
  103. /// <summary>
  104. /// Create a command that will insert a region record
  105. /// </summary>
  106. /// <param name="conn">The database connection</param>
  107. /// <returns>A SqlCommand</returns>
  108. private static SqlCommand GenerateInsertCommand ( SqlConnection conn )
  109. {
  110. SqlCommand  aCommand = new SqlCommand ( "RegionInsert" , conn ) ;
  111. aCommand.CommandType = CommandType.StoredProcedure ;
  112. aCommand.Parameters.Add ( new SqlParameter ( "@RegionDescription" , SqlDbType.NChar , 50 , "RegionDescription" ) ) ;
  113. aCommand.Parameters.Add ( new SqlParameter ( "@RegionID" , SqlDbType.Int, 0 , ParameterDirection.Output ,
  114. false , 0 , 0 , "RegionID" , DataRowVersion.Default , null ) ) ;
  115. aCommand.UpdatedRowSource = UpdateRowSource.OutputParameters ;
  116. return aCommand ;
  117. }
  118. /// <summary>
  119. /// Create a command that will delete a region record
  120. /// </summary>
  121. /// <param name="conn">The database connection</param>
  122. /// <returns>A SqlCommand</returns>
  123. private static SqlCommand GenerateDeleteCommand ( SqlConnection conn )
  124. {
  125. SqlCommand  aCommand = new SqlCommand ( "RegionDelete" , conn ) ;
  126. aCommand.CommandType = CommandType.StoredProcedure ;
  127. aCommand.Parameters.Add ( new SqlParameter ( "@RegionID" , SqlDbType.Int , 0 , "RegionID" ) ) ;
  128. aCommand.UpdatedRowSource = UpdateRowSource.None ;
  129. return aCommand ;
  130. }
  131. /// <summary>
  132. /// Create the Region DataTable
  133. /// </summary>
  134. /// <param name="ds">The dataset within which to create the data table</param>
  135. private static void CreateTable ( DataSet ds )
  136. {
  137. DataTable dt = new DataTable ( "Region" ) ;
  138. DataColumn regionID = new DataColumn ( "RegionID" , typeof ( int ) ) ;
  139. regionID.AllowDBNull = false ;
  140. regionID.AutoIncrement = true ;
  141. regionID.AutoIncrementSeed = 1 ;
  142. DataColumn regionDescription = new DataColumn ( "RegionDescription" , typeof ( string ) ) ;
  143. regionDescription.AllowDBNull = false ;
  144. dt.Columns.Add ( regionID ) ;
  145. dt.Columns.Add ( regionDescription ) ;
  146. ds.Tables.Add ( dt ) ;
  147. }
  148. }