2013-10-10 55 views
0

我在這裏有一個方法,我爲作業創建。我相信它是有效的,我想測試它的工作。因此,這裏的方法:測試C#方法,涉及SQL

public static bool UpdatePerson (Personnel person, out string result) 
    { 

     result = "update not successful"; 
     bool flag = false; 
     System.Data.SqlClient.SqlCommand updatePerson = new System.Data.SqlClient.SqlCommand(); 
     updatePerson.Connection = Data.con; 
     //updatePerson.CommandType = CommandType.StoredProcedure; 
     SqlParameter p1 = new SqlParameter("perFirstName", person.First); 
     SqlParameter p2 = new SqlParameter("perMiddleName", person.Middle); 
     SqlParameter p3 = new SqlParameter("perLastName", person.Last); 
     SqlParameter p4 = new SqlParameter("ID", person.PersonnelID); 
     updatePerson.Parameters.Add(p1); 
     updatePerson.Parameters.Add(p2); 
     updatePerson.Parameters.Add(p3); 
     updatePerson.Parameters.Add(p4); 

     updatePerson.CommandText = "Update tblPersonnel Set perFirstName = " + p1 + " perMiddleName = " + p2 + " perLastName = " + p3 + "Where ID = " + p4; 
     try 
     { 
      Data.con.Open(); 
      updatePerson.ExecuteNonQuery(); 
      result = "Update Successful"; 
      flag = true; 


     } 
     catch (Exception ex) 
     { 
      result = ex.Message; 
     } 
     finally 
     { 
      if (Data.con.State == System.Data.ConnectionState.Open) 
       Data.con.Close(); 
     } 

     return flag; 
    } 

現在,這裏的測試編碼:

在參數
using MovieLibrary; 

namespace Test 
{ 
public partial class Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string result = " "; 


     MovieLibrary.Personnel update = MovieLibrary.Personnel.UpdatePerson(MovieLibrary.Personnel, out result); 
     if (update != null) 
      this.Label1.Text = result; 
    } 
} 

給了我一個問題的唯一事情就是插入數據。這給我一個錯誤,說MovieLibrary.Personnel是一種類型,不屬於那裏。

+1

好吧,你傳遞MovieLibrary.Personnel而不是它的一個實例UpdatePersonel方法(因爲它期望一個實例不是一個類型)。 – Afshin

回答

3

您需要通過Personnel的實例。目前,你正在使用該類型的名稱作爲參數..你不能這樣做。另外..你的方法返回bool ..不是Personnel對象。

希望這可以讓它更清晰。這是你所擁有的,這是錯誤的:

MovieLibrary.Personnel update = 
     MovieLibrary.Personnel.UpdatePerson(MovieLibrary.Personnel, out result); 
//           ^^^^^^^^^^^^^^^^^^^^^^ Wrong 

但是,這是你所需要的:

Personnel p = new Personnel(); 
// set properties here 

// it returns bool 
bool updated = 
     MovieLibrary.Personnel.UpdatePerson(p, out result); 
//          ^^ Right.. an instance 

而且,你正在返回bool,但也有結果的out參數。考慮讓它返回結果(或根據布爾返回值決定要做什麼,或者可能讓異常拋出方法)。

+0

歡迎編輯@Karl :) –

+0

感謝您的幫助。這工作! :d –