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

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 'Calling Stored Procedures' in Chapter 9
  8. /// </summary>
  9. public class StoredProcs
  10. {
  11. /// <summary>
  12. /// StoredProcs - show SQL & Stored Procs
  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. using ( SqlConnection conn = new SqlConnection ( source ) )
  20. {
  21. conn.Open ( ) ;
  22. // Generate the update command
  23. SqlCommand updateCommand = GenerateUpdateCommand ( conn ) ;
  24. // Generate the delete command
  25. SqlCommand deleteCommand = GenerateDeleteCommand ( conn ) ;
  26. // And the insert command
  27. SqlCommand insertCommand = GenerateInsertCommand ( conn ) ;
  28. DumpRegions ( conn , "Regions prior to any stored procedure calls" ) ;
  29. // Insert a new region.
  30. // First set the @RegionDescription parameter to the new value to insert
  31. insertCommand.Parameters["@RegionDescription"].Value = "South West" ;
  32. // Then execute the command
  33. insertCommand.ExecuteNonQuery() ;
  34. // And then get the value returned from the stored proc
  35. int newRegionID = (int)insertCommand.Parameters["@RegionID"].Value ;
  36. DumpRegions ( conn , "Regions after inserting 'South West'" ) ;
  37. // Update the new region...
  38. updateCommand.Parameters[0].Value = newRegionID ;
  39. updateCommand.Parameters[1].Value = "South Western England" ;
  40. updateCommand.ExecuteNonQuery ( ) ;
  41. DumpRegions ( conn , "Regions after updating 'South West' to 'South Western England'" ) ;
  42. // Delete the newly created record
  43. deleteCommand.Parameters["@RegionID"].Value= newRegionID ;
  44. deleteCommand.ExecuteNonQuery ( ) ;
  45. DumpRegions ( conn , "Regions after deleting 'South Western England'" ) ; 
  46. conn.Close ( ) ;
  47. }
  48. }
  49. /// <summary>
  50. /// Create a command that will update a region record
  51. /// </summary>
  52. /// <param name="conn">The database connection</param>
  53. /// <returns>A SqlCommand</returns>
  54. private static SqlCommand GenerateUpdateCommand ( SqlConnection conn )
  55. {
  56. SqlCommand  aCommand = new SqlCommand ( "RegionUpdate" , conn ) ;
  57. aCommand.CommandType = CommandType.StoredProcedure ;
  58. aCommand.Parameters.Add ( new SqlParameter ( "@RegionID" , SqlDbType.Int , 0 , "RegionID" ) ) ;
  59. aCommand.Parameters.Add ( new SqlParameter ( "@RegionDescription" , SqlDbType.NChar , 50 , "RegionDescription" ) ) ;
  60. aCommand.UpdatedRowSource = UpdateRowSource.None ;
  61. return aCommand ;
  62. }
  63. /// <summary>
  64. /// Create a command that will insert a region record
  65. /// </summary>
  66. /// <param name="conn">The database connection</param>
  67. /// <returns>A SqlCommand</returns>
  68. private static SqlCommand GenerateInsertCommand ( SqlConnection conn )
  69. {
  70. SqlCommand  aCommand = new SqlCommand ( "RegionInsert" , conn ) ;
  71. aCommand.CommandType = CommandType.StoredProcedure ;
  72. aCommand.Parameters.Add ( new SqlParameter ( "@RegionDescription" , SqlDbType.NChar , 50 , "RegionDescription" ) ) ;
  73. aCommand.Parameters.Add ( new SqlParameter ( "@RegionID" , SqlDbType.Int, 0 , ParameterDirection.Output ,
  74. false , 0 , 0 , "RegionID" , DataRowVersion.Default , null ) ) ;
  75. aCommand.UpdatedRowSource = UpdateRowSource.OutputParameters ;
  76. return aCommand ;
  77. }
  78. /// <summary>
  79. /// Create a command that will delete a region record
  80. /// </summary>
  81. /// <param name="conn">The database connection</param>
  82. /// <returns>A SqlCommand</returns>
  83. private static SqlCommand GenerateDeleteCommand ( SqlConnection conn )
  84. {
  85. SqlCommand  aCommand = new SqlCommand ( "RegionDelete" , conn ) ;
  86. aCommand.CommandType = CommandType.StoredProcedure ;
  87. aCommand.Parameters.Add ( new SqlParameter ( "@RegionID" , SqlDbType.Int , 0 , "RegionID" ) ) ;
  88. aCommand.UpdatedRowSource = UpdateRowSource.None ;
  89. return aCommand ;
  90. }
  91. /// <summary>
  92. /// Dump out the region records within the database
  93. /// </summary>
  94. /// <param name="conn">Database Connection</param>
  95. /// <param name="message">A brief message to display</param>
  96. private static void DumpRegions ( SqlConnection conn , string message )
  97. {
  98. SqlCommand aCommand = new SqlCommand ( "SELECT RegionID , RegionDescription From Region" , conn ) ;
  99. // Note the use of CommandBehaviour.KeyInfo.
  100. // If this is not set, the default seems to be CommandBehavior.CloseConnection,
  101. // which is an odd default if there ever was one.  Oh well.
  102. SqlDataReader aReader = aCommand.ExecuteReader ( CommandBehavior.KeyInfo ) ;
  103. Console.WriteLine ( message ) ;
  104. while ( aReader . Read ( ) )
  105. {
  106. Console.WriteLine ( "  {0,-20} {1,-40}" , aReader[0] , aReader[1] ) ;
  107. }
  108. aReader.Close ( ) ;
  109. }
  110. }