0

我在这里为家庭作业创建了一个方法。我相信它有效,我想测试它是否有效。所以方法如下:

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 是一种类型,不属于那里。

4

1 回答 1

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结果参数。考虑让它返回结果(或根据布尔返回值决定要做什么......或者可能让异常从方法中抛出)。

于 2013-10-10T02:32:18.460 回答