html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

ADO.NET使用方法和技巧_编程语言综合

[ ] 已经帮助:人解决问题

   以下代码阐明了如何使用 SqlDataAdapter 对象发出可生成 DataSet 或 DataTable 的命令。它从 SQL Server Northwind 数据库中检索一组产品类别。xwWHTML5中文学习网 - HTML5先行者学习网

  using System.Data;xwWHTML5中文学习网 - HTML5先行者学习网

  using System.Data.SqlClient;xwWHTML5中文学习网 - HTML5先行者学习网

  public DataTable RetrieveRowsWithDataTable()xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using ( SqlConnection conn = new SqlConnection(connectionString) )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("DATRetrieveProducts", conn);xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  SqlDataAdapter adapter = new SqlDataAdapter( cmd );xwWHTML5中文学习网 - HTML5先行者学习网

  DataTable dataTable = new DataTable("Products");xwWHTML5中文学习网 - HTML5先行者学习网

  adapter .Fill(dataTable);xwWHTML5中文学习网 - HTML5先行者学习网

  return dataTable;xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  使用 SqlAdapter 生成 DataSet 或 DataTablexwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  创建一个 SqlCommand 对象以调用该存储过程,并将其与一个 SqlConnection 对象(显示)或连接字符串(不显示)相关联。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  创建一个新的 SqlDataAdapter 对象并将其与 SqlCommand 对象相关联。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  创建一个 DataTable(也可以创建一个 DataSet)对象。使用构造函数参数来命名 DataTable。xwWHTML5中文学习网 - HTML5先行者学习网

  4.xwWHTML5中文学习网 - HTML5先行者学习网

  调用 SqlDataAdapter 对象的 Fill 方法,用检索到的行填充 DataSet 或 DataTable。xwWHTML5中文学习网 - HTML5先行者学习网

  如何使用 SqlDataReader 来检索多个行xwWHTML5中文学习网 - HTML5先行者学习网

  以下代码片段阐明了可检索多个行的 SqlDataReader 方法。xwWHTML5中文学习网 - HTML5先行者学习网

  using System.IO;xwWHTML5中文学习网 - HTML5先行者学习网

  using System.Data;xwWHTML5中文学习网 - HTML5先行者学习网

  using System.Data.SqlClient;xwWHTML5中文学习网 - HTML5先行者学习网

  public SqlDataReader RetrieveRowsWithDataReader()xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=northwind");xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("DATRetrieveProducts", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  tryxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  // Generate the reader. CommandBehavior.CloseConnection causes thexwWHTML5中文学习网 - HTML5先行者学习网

  // the connection to be closed when the reader object is closedxwWHTML5中文学习网 - HTML5先行者学习网

  return( cmd.ExecuteReader( CommandBehavior.CloseConnection ) );xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  catchxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Close();xwWHTML5中文学习网 - HTML5先行者学习网

  throw;xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  // Display the product list using the consolexwWHTML5中文学习网 - HTML5先行者学习网

  private void DisplayProducts()xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlDataReader reader = RetrieveRowsWithDataReader();xwWHTML5中文学习网 - HTML5先行者学习网

  tryxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  while (reader.Read())xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  Console.WriteLine("{0} {1} {2}",xwWHTML5中文学习网 - HTML5先行者学习网

  reader.GetInt32(0).ToString(),xwWHTML5中文学习网 - HTML5先行者学习网

  reader.GetString(1) );xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  finallyxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  reader.Close(); // Also closes the connection due to thexwWHTML5中文学习网 - HTML5先行者学习网

  // CommandBehavior enum used when generating the readerxwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  使用 SqlDataReader 检索行xwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  创建一个用来执行存储过程的 SqlCommand 对象,并将其与一个 SqlConnection 对象相关联。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  打开连接。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  通过调用 SqlCommand 对象的 ExecuteReader 方法创建一个 SqlDataReader 对象。xwWHTML5中文学习网 - HTML5先行者学习网

  4.xwWHTML5中文学习网 - HTML5先行者学习网

  要从流中读取数据,请调用 SqlDataReader 对象的 Read 方法来检索行,并使用类型化访问器方法(如 GetInt32 和 GetString 方法)来检索列值。xwWHTML5中文学习网 - HTML5先行者学习网

  5.xwWHTML5中文学习网 - HTML5先行者学习网

  使用完读取器后,请调用其 Close 方法。xwWHTML5中文学习网 - HTML5先行者学习网

  如何使用 XmlReader 检索多个行xwWHTML5中文学习网 - HTML5先行者学习网

  可以使用 SqlCommand 对象来生成 XmlReader 对象,后者可提供对 XML 数据的基于流的只进访问。命令(通常为存储过程)必须产生基于 XML 的结果集,对于 SQL Server 2000 而言,该结果集通常包含一个带有有效 FOR XML 子句的 SELECT 语句。以下代码片段阐明了该方法:xwWHTML5中文学习网 - HTML5先行者学习网

  public void RetrieveAndDisplayRowsWithXmlReader()xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(connectionString) )xwWHTML5中文学习网 - HTML5先行者学习网

  {;xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("DATRetrieveProductsXML", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  tryxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  XmlTextReader xreader = (XmlTextReader)cmd.ExecuteXmlReader();xwWHTML5中文学习网 - HTML5先行者学习网

  while ( xreader.Read() )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  if ( xreader.Name == "PRODUCTS" )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  string strOutput = xreader.GetAttribute("ProductID");xwWHTML5中文学习网 - HTML5先行者学习网

  strOutput += " ";xwWHTML5中文学习网 - HTML5先行者学习网

  strOutput += xreader.GetAttribute("ProductName");xwWHTML5中文学习网 - HTML5先行者学习网

  Console.WriteLine( strOutput );xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  xreader.Close(); // XmlTextReader does not support IDisposable so it can't bexwWHTML5中文学习网 - HTML5先行者学习网

  // used within a using keywordxwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  上述代码使用了以下存储过程:xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE DATRetrieveProductsXMLxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  SELECT * FROM PRODUCTSxwWHTML5中文学习网 - HTML5先行者学习网

  FOR XML AUTOxwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  使用 XmlReader 检索 XML 数据xwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  创建一个 SqlCommand 对象来调用可生成 XML 结果集的存储过程(例如,在 SELECT 语句中使用 FOR XML 子句)。将该 SqlCommand 对象与某个连接相关联。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  调用 SqlCommand 对象的 ExecuteXmlReader 方法,并且将结果分配给只进 XmlTextReader 对象。当您不需要对返回的数据进行任何基于 XML 的验证时,这是应该使用的最快类型的 XmlReader 对象。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  使用 XmlTextReader 对象的 Read 方法来读取数据。xwWHTML5中文学习网 - HTML5先行者学习网

  如何使用存储过程输出参数来检索单个行xwWHTML5中文学习网 - HTML5先行者学习网

  借助于命名的输出参数,可以调用在单个行内返回检索到的数据项的存储过程。以下代码片段使用存储过程来检索 Northwind 数据库的 Products 表中包含的特定产品的产品名称和单价。xwWHTML5中文学习网 - HTML5先行者学习网

  void GetProductDetails( int ProductID,xwWHTML5中文学习网 - HTML5先行者学习网

  out string ProductName, out decimal UnitPrice )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=Northwind") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // Set up the command object used to execute the stored procxwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand( "DATGetProductDetailsSPOutput", conn )xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  // Establish stored proc parameters.xwWHTML5中文学习网 - HTML5先行者学习网

  // @ProductID int INPUTxwWHTML5中文学习网 - HTML5先行者学习网

  // @ProductName nvarchar(40) OUTPUTxwWHTML5中文学习网 - HTML5先行者学习网

  // @UnitPrice money OUTPUTxwWHTML5中文学习网 - HTML5先行者学习网

  // Must explicitly set the direction of output parametersxwWHTML5中文学习网 - HTML5先行者学习网

  SqlParameter paramProdID =xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add( "@ProductID", ProductID );xwWHTML5中文学习网 - HTML5先行者学习网

  paramProdID.Direction = ParameterDirection.Input;xwWHTML5中文学习网 - HTML5先行者学习网

  SqlParameter paramProdName =xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add( "@ProductName", SqlDbType.VarChar, 40 );xwWHTML5中文学习网 - HTML5先行者学习网

  paramProdName.Direction = ParameterDirection.Output;xwWHTML5中文学习网 - HTML5先行者学习网

  SqlParameter paramUnitPrice =xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add( "@UnitPrice", SqlDbType.Money );xwWHTML5中文学习网 - HTML5先行者学习网

  paramUnitPrice.Direction = ParameterDirection.Output;xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  // Use ExecuteNonQuery to run the command.xwWHTML5中文学习网 - HTML5先行者学习网

  // Although no rows are returned any mapped output parametersxwWHTML5中文学习网 - HTML5先行者学习网

  // (and potentially return values) are populatedxwWHTML5中文学习网 - HTML5先行者学习网

  cmd.ExecuteNonQuery( );xwWHTML5中文学习网 - HTML5先行者学习网

  // Return output parameters from stored procxwWHTML5中文学习网 - HTML5先行者学习网

  ProductName = paramProdName.Value.ToString();xwWHTML5中文学习网 - HTML5先行者学习网

  UnitPrice = (decimal)paramUnitPrice.Value;xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  使用存储过程输出参数来检索单个行xwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  创建一个 SqlCommand 对象并将其与一个 SqlConnection 对象相关联。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  通过调用 SqlCommand 的 Parameters 集合的 Add 方法来设置存储过程参数。默认情况下,参数都被假设为输入参数,因此必须显式设置任何输出参数的方向。xwWHTML5中文学习网 - HTML5先行者学习网

  注 一种良好的习惯做法是显式设置所有参数(包括输入参数)的方向。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  打开连接。xwWHTML5中文学习网 - HTML5先行者学习网

  4.xwWHTML5中文学习网 - HTML5先行者学习网

  调用 SqlCommand 对象的 ExecuteNonQuery 方法。这将填充输出参数(并可能填充返回值)。xwWHTML5中文学习网 - HTML5先行者学习网

  5.xwWHTML5中文学习网 - HTML5先行者学习网

  通过使用 Value 属性,从适当的 SqlParameter 对象中检索输出参数。xwWHTML5中文学习网 - HTML5先行者学习网

  6.xwWHTML5中文学习网 - HTML5先行者学习网

  关闭连接。xwWHTML5中文学习网 - HTML5先行者学习网

  上述代码片段调用了以下存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE DATGetProductDetailsSPOutputxwWHTML5中文学习网 - HTML5先行者学习网

  @ProductID int,xwWHTML5中文学习网 - HTML5先行者学习网

  @ProductName nvarchar(40) OUTPUT,xwWHTML5中文学习网 - HTML5先行者学习网

  @UnitPrice money OUTPUTxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  SELECT @ProductName = ProductName,xwWHTML5中文学习网 - HTML5先行者学习网

  @UnitPrice = UnitPricexwWHTML5中文学习网 - HTML5先行者学习网

  FROM ProductsxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE ProductID = @ProductIDxwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  如何使用 SqlDataReader 来检索单个行xwWHTML5中文学习网 - HTML5先行者学习网

  可以使用 SqlDataReader 对象来检索单个行,尤其是可以从返回的数据流中检索需要的列值。以下代码片段对此进行了说明。xwWHTML5中文学习网 - HTML5先行者学习网

  void GetProductDetailsUsingReader( int ProductID,xwWHTML5中文学习网 - HTML5先行者学习网

  out string ProductName, out decimal UnitPrice )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=Northwind") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // Set up the command object used to execute the stored procxwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand( "DATGetProductDetailsReader", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  // Establish stored proc parameters.xwWHTML5中文学习网 - HTML5先行者学习网

  // @ProductID int INPUTxwWHTML5中文学习网 - HTML5先行者学习网

  SqlParameter paramProdID = cmd.Parameters.Add( "@ProductID", ProductID );xwWHTML5中文学习网 - HTML5先行者学习网

  paramProdID.Direction = ParameterDirection.Input;xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlDataReader reader = cmd.ExecuteReader() )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  if( reader.Read() ) // Advance to the one and only rowxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // Return output parameters from returned data streamxwWHTML5中文学习网 - HTML5先行者学习网

  ProductName = reader.GetString(0);xwWHTML5中文学习网 - HTML5先行者学习网

  UnitPrice = reader.GetDecimal(1);xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  使用 SqlDataReader 对象来返回单个行xwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  建立 SqlCommand 对象。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  打开连接。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  调用 SqlDataReader 对象的 ExecuteReader 方法。xwWHTML5中文学习网 - HTML5先行者学习网

  4.xwWHTML5中文学习网 - HTML5先行者学习网

  通过 SqlDataReader 对象的类型化访问器方法(在这里,为 GetString 和 GetDecimal)来检索输出参数。xwWHTML5中文学习网 - HTML5先行者学习网

  上述代码片段调用了以下存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE DATGetProductDetailsReaderxwWHTML5中文学习网 - HTML5先行者学习网

  @ProductID intxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  SELECT ProductName, UnitPrice FROM ProductsxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE ProductID = @ProductIDxwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  如何使用 ExecuteScalar 来检索单个项xwWHTML5中文学习网 - HTML5先行者学习网

  ExecuteScalar 方法专门适用于仅返回单个值的查询。如果查询返回多个列和/或行,ExecuteScalar 将只返回第一行的第一列。xwWHTML5中文学习网 - HTML5先行者学习网

  以下代码说明了如何查找与特定产品 ID 相对应的产品名称:xwWHTML5中文学习网 - HTML5先行者学习网

  void GetProductNameExecuteScalar( int ProductID, out string ProductName )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=northwind") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("LookupProductNameScalar", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add("@ProductID", ProductID );xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  ProductName = (string)cmd.ExecuteScalar();xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  使用 ExecuteScalar 来检索单个项xwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  建立一个 SqlCommand 对象来调用存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  打开连接。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  调用 ExecuteScalar 方法。注意,该方法返回一个对象类型。它包含检索到的第一列的值,并且必须转化为适当的类型。xwWHTML5中文学习网 - HTML5先行者学习网

  4.xwWHTML5中文学习网 - HTML5先行者学习网

  关闭连接。xwWHTML5中文学习网 - HTML5先行者学习网

  上述代码使用了以下存储过程:xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE LookupProductNameScalarxwWHTML5中文学习网 - HTML5先行者学习网

  @ProductID intxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  SELECT TOP 1 ProductNamexwWHTML5中文学习网 - HTML5先行者学习网

  FROM ProductsxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE ProductID = @ProductIDxwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  如何使用存储过程输出或返回参数来检索单个项xwWHTML5中文学习网 - HTML5先行者学习网

  可以使用存储过程输出或返回参数来查找单个值。以下代码阐明了输出参数的用法:xwWHTML5中文学习网 - HTML5先行者学习网

  void GetProductNameUsingSPOutput( int ProductID, out string ProductName )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=northwind") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("LookupProductNameSPOutput", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  SqlParameter paramProdID = cmd.Parameters.Add("@ProductID", ProductID );xwWHTML5中文学习网 - HTML5先行者学习网

  ParamProdID.Direction = ParameterDirection.Input;xwWHTML5中文学习网 - HTML5先行者学习网

  SqlParameter paramPN =xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add("@ProductName", SqlDbType.VarChar, 40 );xwWHTML5中文学习网 - HTML5先行者学习网

  paramPN.Direction = ParameterDirection.Output;xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.ExecuteNonQuery();xwWHTML5中文学习网 - HTML5先行者学习网

  ProductName = paramPN.Value.ToString();xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  使用存储过程输出参数来检索单个值xwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  建立一个 SqlCommand 对象来调用存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  通过将 SqlParameters 添加到 SqlCommand 的 Parameters 集合中,设置任何输入参数和单个输出参数。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  打开连接。xwWHTML5中文学习网 - HTML5先行者学习网

  4.xwWHTML5中文学习网 - HTML5先行者学习网

  调用 SqlCommand 对象的 ExecuteNonQuery 方法。xwWHTML5中文学习网 - HTML5先行者学习网

  5.xwWHTML5中文学习网 - HTML5先行者学习网

  关闭连接。xwWHTML5中文学习网 - HTML5先行者学习网

  6.xwWHTML5中文学习网 - HTML5先行者学习网

  通过使用输出 SqlParameter 的 Value 属性来检索输出值。xwWHTML5中文学习网 - HTML5先行者学习网

  上述代码使用了以下存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE LookupProductNameSPOutputxwWHTML5中文学习网 - HTML5先行者学习网

  @ProductID int,xwWHTML5中文学习网 - HTML5先行者学习网

  @ProductName nvarchar(40) OUTPUTxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  SELECT @ProductName = ProductNamexwWHTML5中文学习网 - HTML5先行者学习网

  FROM ProductsxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE ProductID = @ProductIDxwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  以下代码阐明了如何使用返回值来指明是否存在特定行。从编码角度来看,这类似于使用存储过程输出参数,不同之处在于必须将 SqlParameter 方向显式设置为 ParameterDirection.ReturnValue。xwWHTML5中文学习网 - HTML5先行者学习网

  bool CheckProduct( int ProductID )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=northwind") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("CheckProductSP", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add("@ProductID", ProductID );xwWHTML5中文学习网 - HTML5先行者学习网

  SqlParameter paramRet =xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add("@ProductExists", SqlDbType.Int );xwWHTML5中文学习网 - HTML5先行者学习网

  paramRet.Direction = ParameterDirection.ReturnValue;xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.ExecuteNonQuery();xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  return (int)paramRet.Value == 1;xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  通过使用存储过程返回值来检查是否存在特定行xwWHTML5中文学习网 - HTML5先行者学习网

  1.xwWHTML5中文学习网 - HTML5先行者学习网

  建立一个 SqlCommand 对象来调用存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  2.xwWHTML5中文学习网 - HTML5先行者学习网

  设置一个输入参数,该参数含有要访问的行的主键值。xwWHTML5中文学习网 - HTML5先行者学习网

  3.xwWHTML5中文学习网 - HTML5先行者学习网

  设置单个返回值参数。将一个 SqlParameter 对象添加到 SqlCommand 的 Parameters 集合中,并将其方向设置为 ParameterDirection.ReturnValue。xwWHTML5中文学习网 - HTML5先行者学习网

  4.xwWHTML5中文学习网 - HTML5先行者学习网

  打开连接。xwWHTML5中文学习网 - HTML5先行者学习网

  5.xwWHTML5中文学习网 - HTML5先行者学习网

  调用 SqlCommand 对象的 ExecuteNonQuery 方法。xwWHTML5中文学习网 - HTML5先行者学习网

  6.xwWHTML5中文学习网 - HTML5先行者学习网

  关闭连接。xwWHTML5中文学习网 - HTML5先行者学习网

  7.xwWHTML5中文学习网 - HTML5先行者学习网

  通过使用返回值 SqlParameter 的 Value 属性来检索返回值。xwWHTML5中文学习网 - HTML5先行者学习网

  上述代码使用了以下存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE CheckProductSPxwWHTML5中文学习网 - HTML5先行者学习网

  @ProductID intxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  IF EXISTS( SELECT ProductIDxwWHTML5中文学习网 - HTML5先行者学习网

  FROM ProductsxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE ProductID = @ProductID )xwWHTML5中文学习网 - HTML5先行者学习网

  return 1xwWHTML5中文学习网 - HTML5先行者学习网

  ELSExwWHTML5中文学习网 - HTML5先行者学习网

  return 0xwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  如何使用 SqlDataReader 来检索单个项xwWHTML5中文学习网 - HTML5先行者学习网

  可以使用 SqlDataReader 对象并通过调用命令对象的 ExecuteReader 方法来获取单个输出值。这要求编写稍微多一点的代码,因为必须调用 SqlDataReader Read 方法,然后通过该读取器的访问器方法之一来检索需要的值。以下代码阐明了 SqlDataReader 对象的用法。xwWHTML5中文学习网 - HTML5先行者学习网

  bool CheckProductWithReader( int ProductID )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=northwind") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("CheckProductExistsWithCount", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add("@ProductID", ProductID );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters["@ProductID"].Direction = ParameterDirection.Input;xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlDataReader reader = cmd.ExecuteReader(xwWHTML5中文学习网 - HTML5先行者学习网

  CommandBehavior.SingleResult ) )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  if( reader.Read() )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  return (reader.GetInt32(0) > 0);xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  return false;xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  上述代码采用了以下存储过程。xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE CheckProductExistsWithCountxwWHTML5中文学习网 - HTML5先行者学习网

  @ProductID intxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  SELECT COUNT(*) FROM ProductsxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE ProductID = @ProductIDxwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  如何编写 ADO.NET 手动事务处理代码xwWHTML5中文学习网 - HTML5先行者学习网

  以下代码显示了如何充分利用 SQL Server .NET 数据提供程序所提供的事务处理支持,通过事务来保护资金转帐操作。该操作在同一数据库中的两个帐户之间转移资金。xwWHTML5中文学习网 - HTML5先行者学习网

  public void TransferMoney( string toAccount, string fromAccount, decimal amount )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using ( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "server=(local);Integrated Security=SSPI;database=SimpleBank" ) )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmdCredit = new SqlCommand("Credit", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmdCredit.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  cmdCredit.Parameters.Add( new SqlParameter("@AccountNo", toAccount) );xwWHTML5中文学习网 - HTML5先行者学习网

  cmdCredit.Parameters.Add( new SqlParameter("@Amount", amount ));xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmdDebit = new SqlCommand("Debit", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmdDebit.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  cmdDebit.Parameters.Add( new SqlParameter("@AccountNo", fromAccount) );xwWHTML5中文学习网 - HTML5先行者学习网

  cmdDebit.Parameters.Add( new SqlParameter("@Amount", amount ));xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  // Start a new transactionxwWHTML5中文学习网 - HTML5先行者学习网

  using ( SqlTransaction trans = conn.BeginTransaction() )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // Associate the two command objects with the same transactionxwWHTML5中文学习网 - HTML5先行者学习网

  cmdCredit.Transaction = trans;xwWHTML5中文学习网 - HTML5先行者学习网

  cmdDebit.Transaction = trans;xwWHTML5中文学习网 - HTML5先行者学习网

  tryxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  cmdCredit.ExecuteNonQuery();xwWHTML5中文学习网 - HTML5先行者学习网

  cmdDebit.ExecuteNonQuery();xwWHTML5中文学习网 - HTML5先行者学习网

  // Both commands (credit and debit) were successfulxwWHTML5中文学习网 - HTML5先行者学习网

  trans.Commit();xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  catch( Exception ex )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // transaction failedxwWHTML5中文学习网 - HTML5先行者学习网

  trans.Rollback();xwWHTML5中文学习网 - HTML5先行者学习网

  // log exception details . . .xwWHTML5中文学习网 - HTML5先行者学习网

  throw ex;xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  如何使用 Transact-SQL 执行事务处理xwWHTML5中文学习网 - HTML5先行者学习网

  以下存储过程阐明了如何在 Transact-SQL 存储过程内部执行事务性资金转帐操作。xwWHTML5中文学习网 - HTML5先行者学习网

  CREATE PROCEDURE MoneyTransferxwWHTML5中文学习网 - HTML5先行者学习网

  @FromAccount char(20),xwWHTML5中文学习网 - HTML5先行者学习网

  @ToAccount char(20),xwWHTML5中文学习网 - HTML5先行者学习网

  @Amount moneyxwWHTML5中文学习网 - HTML5先行者学习网

  ASxwWHTML5中文学习网 - HTML5先行者学习网

  BEGIN TRANSACTIONxwWHTML5中文学习网 - HTML5先行者学习网

  -- PERFORM DEBIT OPERATIONxwWHTML5中文学习网 - HTML5先行者学习网

  UPDATE AccountsxwWHTML5中文学习网 - HTML5先行者学习网

  SET Balance = Balance - @AmountxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE AccountNumber = @FromAccountxwWHTML5中文学习网 - HTML5先行者学习网

  IF @@RowCount = 0xwWHTML5中文学习网 - HTML5先行者学习网

  BEGINxwWHTML5中文学习网 - HTML5先行者学习网

  RAISERROR('Invalid From Account Number', 11, 1)xwWHTML5中文学习网 - HTML5先行者学习网

  GOTO ABORTxwWHTML5中文学习网 - HTML5先行者学习网

  ENDxwWHTML5中文学习网 - HTML5先行者学习网

  DECLARE @Balance moneyxwWHTML5中文学习网 - HTML5先行者学习网

  SELECT @Balance = Balance FROM ACCOUNTSxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE AccountNumber = @FromAccountxwWHTML5中文学习网 - HTML5先行者学习网

  IF @BALANCE < 0xwWHTML5中文学习网 - HTML5先行者学习网

  BEGINxwWHTML5中文学习网 - HTML5先行者学习网

  RAISERROR('Insufficient funds', 11, 1)xwWHTML5中文学习网 - HTML5先行者学习网

  GOTO ABORTxwWHTML5中文学习网 - HTML5先行者学习网

  ENDxwWHTML5中文学习网 - HTML5先行者学习网

  -- PERFORM CREDIT OPERATIONxwWHTML5中文学习网 - HTML5先行者学习网

  UPDATE AccountsxwWHTML5中文学习网 - HTML5先行者学习网

  SET Balance = Balance + @AmountxwWHTML5中文学习网 - HTML5先行者学习网

  WHERE AccountNumber = @ToAccountxwWHTML5中文学习网 - HTML5先行者学习网

  IF @@RowCount = 0xwWHTML5中文学习网 - HTML5先行者学习网

  BEGINxwWHTML5中文学习网 - HTML5先行者学习网

  RAISERROR('Invalid To Account Number', 11, 1)xwWHTML5中文学习网 - HTML5先行者学习网

  GOTO ABORTxwWHTML5中文学习网 - HTML5先行者学习网

  ENDxwWHTML5中文学习网 - HTML5先行者学习网

  COMMIT TRANSACTIONxwWHTML5中文学习网 - HTML5先行者学习网

  RETURN 0xwWHTML5中文学习网 - HTML5先行者学习网

  ABORT:xwWHTML5中文学习网 - HTML5先行者学习网

  ROLLBACK TRANSACTIONxwWHTML5中文学习网 - HTML5先行者学习网

  GOxwWHTML5中文学习网 - HTML5先行者学习网

  该存储过程使用 BEGIN TRANSACTION、COMMIT TRANSACTION 和 ROLLBACK TRANSACTION 语句来手动控制该事务。xwWHTML5中文学习网 - HTML5先行者学习网

  如何编写事务性 .NET 类xwWHTML5中文学习网 - HTML5先行者学习网

  以下示例代码显示了三个服务性 .NET 托管类,这些类经过配置以执行自动事务处理。每个类都使用 Transaction 属性进行了批注,该属性的值确定是否应该启动新的事务流,或者该对象是否应该共享其直接调用方的事务流。这些组件协同工作来执行银行资金转帐任务。Transfer 类被使用 RequiresNew 事务属性进行了配置,而 Debit 和 Credit 被使用 Required 进行了配置。结果,所有这三个对象在运行时都将共享同一事务。xwWHTML5中文学习网 - HTML5先行者学习网

  using System;xwWHTML5中文学习网 - HTML5先行者学习网

  using System.EnterpriseServices;xwWHTML5中文学习网 - HTML5先行者学习网

  [Transaction(TransactionOption.RequiresNew)]xwWHTML5中文学习网 - HTML5先行者学习网

  public class Transfer : ServicedComponentxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  [AutoComplete]xwWHTML5中文学习网 - HTML5先行者学习网

  public void Transfer( string toAccount,xwWHTML5中文学习网 - HTML5先行者学习网

  string fromAccount, decimal amount )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  tryxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // Perform the debit operationxwWHTML5中文学习网 - HTML5先行者学习网

  Debit debit = new Debit();xwWHTML5中文学习网 - HTML5先行者学习网

  debit.DebitAccount( fromAccount, amount );xwWHTML5中文学习网 - HTML5先行者学习网

  // Perform the credit operationxwWHTML5中文学习网 - HTML5先行者学习网

  Credit credit = new Credit();xwWHTML5中文学习网 - HTML5先行者学习网

  credit.CreditAccount( toAccount, amount );xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  catch( SqlException sqlex )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // Handle and log exception detailsxwWHTML5中文学习网 - HTML5先行者学习网

  // Wrap and propagate the exceptionxwWHTML5中文学习网 - HTML5先行者学习网

  throw new TransferException( "Transfer Failure", sqlex );xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  [Transaction(TransactionOption.Required)]xwWHTML5中文学习网 - HTML5先行者学习网

  public class Credit : ServicedComponentxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  [AutoComplete]xwWHTML5中文学习网 - HTML5先行者学习网

  public void CreditAccount( string account, decimal amount )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  tryxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "Server=(local); Integrated Security=SSPI"; database="SimpleBank") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("Credit", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add( new SqlParameter("@AccountNo", account) );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add( new SqlParameter("@Amount", amount ));xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.ExecuteNonQuery();xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }catch( SqlException sqlex ){xwWHTML5中文学习网 - HTML5先行者学习网

  // Log exception details herexwWHTML5中文学习网 - HTML5先行者学习网

  throw; // Propagate exceptionxwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  [Transaction(TransactionOption.Required)]xwWHTML5中文学习网 - HTML5先行者学习网

  public class Debit : ServicedComponentxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  public void DebitAccount( string account, decimal amount )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  tryxwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  using( SqlConnection conn = new SqlConnection(xwWHTML5中文学习网 - HTML5先行者学习网

  "Server=(local); Integrated Security=SSPI"; database="SimpleBank") )xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  SqlCommand cmd = new SqlCommand("Debit", conn );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.CommandType = CommandType.StoredProcedure;xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add( new SqlParameter("@AccountNo", account) );xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.Parameters.Add( new SqlParameter("@Amount", amount ));xwWHTML5中文学习网 - HTML5先行者学习网

  conn.Open();xwWHTML5中文学习网 - HTML5先行者学习网

  cmd.ExecuteNonQuery();xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  catch (SqlException sqlex)xwWHTML5中文学习网 - HTML5先行者学习网

  {xwWHTML5中文学习网 - HTML5先行者学习网

  // Log exception details herexwWHTML5中文学习网 - HTML5先行者学习网

  throw; // Propagate exception back to callerxwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

  }xwWHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助