2013-10-10 54 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 –