在这一节中,我们将会看到如何写一个执行了一些逻辑,但是却没有任何返回值和输出参数的存储过程。在这个例子里,我们将创建一个名为“C# ChangeCompanyName”的存储过程,它用来修改Customers表中CompanyName字段的值。 这个存储过程需要两个参数 – CustomerID(需要更改公司名称的客户的ID)和CompanyName(新的公司名称)。 “ChangeCompanyName”存储过程完成后的代码如下:
- public static void ChangeCompanyName
- (SqlString CustomerID, SqlString CompanyName)
- {
- SqlConnection cnn = new SqlConnection
- ("context connection=true");
- cnn.Open();
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = cnn;
- cmd.CommandText = "update customers set
- companyname=@p1 where customerid=@p2";
- SqlParameter p1 = new SqlParameter("@p1", CompanyName);
- SqlParameter p2 = new SqlParameter("@p2", CustomerID);
- cmd.Parameters.Add(p1);
- cmd.Parameters.Add(p2);
- int i=cmd.ExecuteNonQuery();
- cnn.Close();
- SqlContext.Pipe.Send(i.ToString());
- }
仔细看一下这个C# ChangeCompanyName()方法。 它是一个静态方法并且没有返回值(void)。 它需要两个名为CustomerID和CompanyName的参数。 请注意这两个参数的数据类型都是SqlString。 SqlString可以用来代替SQL Server中的nvarchar数据类型。 这个方法用了一个[SqlProcedure]属性来修饰。 该属性用于标记ChangeCompanyName()方法是一个SQL Server存储过程。
在方法内我们创建了一个SqlConnection对象,并设置其连接字符串为“context connection = true”。 “上下文连接”可以让你使用当前登录到数据库的用户作为你的登录数据库的验证信息。 本例中,C# ChangeCompanyName()方法将会转换为存储过程,然后保存到Northwind数据库里。 所以在这里的“上下文连接”指的就是Northwind数据库。 这样你就不需要再写任何关于登录数据库的验证信息了。
接下来是打开数据库连接。 然后通过设置SqlCommand对象的Connection和CommandText属性,让其执行更新操作。同时,我们还需要设置两个参数。 这样通过调用ExecuteNonQuery()方法就可以执行更新操作了。 再接下来就是关闭连接。
***,将ExecuteNonQuery()方法的返回值发送到客户端。 当然你也可以不做这一步。现在我们来了解一下SqlContext类的使用。 SqlContext类用于在服务端和客户端之间传递处理结果。本例使用了Send()方法发送一个字符串返回给调用者。
【编辑推荐】