淺析C# ChangeCompanyName
在這一節(jié)中,我們將會(huì)看到如何寫一個(gè)執(zhí)行了一些邏輯,但是卻沒有任何返回值和輸出參數(shù)的存儲(chǔ)過程。在這個(gè)例子里,我們將創(chuàng)建一個(gè)名為“C# ChangeCompanyName”的存儲(chǔ)過程,它用來修改Customers表中CompanyName字段的值。 這個(gè)存儲(chǔ)過程需要兩個(gè)參數(shù) – CustomerID(需要更改公司名稱的客戶的ID)和CompanyName(新的公司名稱)。 “ChangeCompanyName”存儲(chǔ)過程完成后的代碼如下:
- 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());
- }
仔細(xì)看一下這個(gè)C# ChangeCompanyName()方法。 它是一個(gè)靜態(tài)方法并且沒有返回值(void)。 它需要兩個(gè)名為CustomerID和CompanyName的參數(shù)。 請(qǐng)注意這兩個(gè)參數(shù)的數(shù)據(jù)類型都是SqlString。 SqlString可以用來代替SQL Server中的nvarchar數(shù)據(jù)類型。 這個(gè)方法用了一個(gè)[SqlProcedure]屬性來修飾。 該屬性用于標(biāo)記ChangeCompanyName()方法是一個(gè)SQL Server存儲(chǔ)過程。
在方法內(nèi)我們創(chuàng)建了一個(gè)SqlConnection對(duì)象,并設(shè)置其連接字符串為“context connection = true”。 “上下文連接”可以讓你使用當(dāng)前登錄到數(shù)據(jù)庫的用戶作為你的登錄數(shù)據(jù)庫的驗(yàn)證信息。 本例中,C# ChangeCompanyName()方法將會(huì)轉(zhuǎn)換為存儲(chǔ)過程,然后保存到Northwind數(shù)據(jù)庫里。 所以在這里的“上下文連接”指的就是Northwind數(shù)據(jù)庫。 這樣你就不需要再寫任何關(guān)于登錄數(shù)據(jù)庫的驗(yàn)證信息了。
接下來是打開數(shù)據(jù)庫連接。 然后通過設(shè)置SqlCommand對(duì)象的Connection和CommandText屬性,讓其執(zhí)行更新操作。同時(shí),我們還需要設(shè)置兩個(gè)參數(shù)。 這樣通過調(diào)用ExecuteNonQuery()方法就可以執(zhí)行更新操作了。 再接下來就是關(guān)閉連接。
***,將ExecuteNonQuery()方法的返回值發(fā)送到客戶端。 當(dāng)然你也可以不做這一步。現(xiàn)在我們來了解一下SqlContext類的使用。 SqlContext類用于在服務(wù)端和客戶端之間傳遞處理結(jié)果。本例使用了Send()方法發(fā)送一個(gè)字符串返回給調(diào)用者。
【編輯推薦】